Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Visible eines Image=true aber trotzdem unsichtbar (https://www.delphipraxis.net/73384-visible-eines-image%3Dtrue-aber-trotzdem-unsichtbar.html)

dino 17. Jul 2006 12:53


Visible eines Image=true aber trotzdem unsichtbar
 
ich glaube, dass mein Image durch Draw überzeichnet wird, aber wie kann ich das verhindern?

mein Image ist am Anfang visible=false, wird dann aber an die entsprechende Stelle gesetzt und visible = true gesetzt, bleibt dann aber auch nachweislich =true
nur da ich mein Hintergrund immer wieder neu zeichnen muss, wird diese über mein Image gezeichnet
kann man das irgendwie einstellen, dass man das Image nicht mehr überzeichnet sondern nur noch unterzeichnet(Image ist Transparent)

Bernhard Geyer 17. Jul 2006 12:57

Re: Visible eines Image=true aber trotzdem unsichtbar
 
12 Zeile, 8 Zeichen :-)

Kannst Du mal ein bischen Quellcode posten was du mit deinem Image so machst
(Erzeugung, ...), ansonsten haben wir Ratestunde.

3_of_8 17. Jul 2006 12:59

Re: Visible eines Image=true aber trotzdem unsichtbar
 
Du zeichnest auf ein Image? Nee, nimm lieber ne Paintbox (oder gleich was ordentliches: DelphiX). Ansonsten wird das Ding eigentlich nicht überschrieben.

dino 17. Jul 2006 13:03

Re: Visible eines Image=true aber trotzdem unsichtbar
 
hab keine Paintbox, bin doch Delphi 3, aer ich versuche immernoch Delphi 2005 u kriegen, aber irgendwie hats der Server nicht mehr

dino 17. Jul 2006 13:07

Re: Visible eines Image=true aber trotzdem unsichtbar
 
ist 2005 viel neuer als 3?

Thorben77 17. Jul 2006 13:14

Re: Visible eines Image=true aber trotzdem unsichtbar
 
Zitat:

Zitat von dino
ist 2005 viel neuer als 3?

Wenn 8 Jahre viel sind :wink: .

dino 17. Jul 2006 13:18

Re: Visible eines Image=true aber trotzdem unsichtbar
 
ihr wisst aber nicht, wie ich Delphi sage soll, dass er meine lieben kleinen Images nicht übermalen darf, oder?

3_of_8 17. Jul 2006 13:22

Re: Visible eines Image=true aber trotzdem unsichtbar
 
Delphi übermalt deine Images nicht. Das machst du schon selber.

dino 17. Jul 2006 13:25

Re: Visible eines Image=true aber trotzdem unsichtbar
 
ja aber wie kann ich das verhindern???
kann man Image.overwriteable:=false oder sowas machen?
oder die Draw anweisung ein bisschen abändern, damit er nur im Hintergrund zeichnet...

3_of_8 17. Jul 2006 13:36

Re: Visible eines Image=true aber trotzdem unsichtbar
 
:roll:

Ich sags nochmal: Delphi überschreibt dir garantiert dein Image nicht. Wenn da was überschrieben wird, dann deshalb, weil du es ausdrücklich selbst überschreibst.

Ohne etwas Code werden wir dir auch nicht helfen können.

dino 17. Jul 2006 13:53

Re: Visible eines Image=true aber trotzdem unsichtbar
 
form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp0)
1: begin rrun.Left:=xp-xs+180;rrun.Top:=yp-ys+256;rrun.visible:=true;end;


das 1. ist der Hintergrund, das 2. das Image, im Vordergrund

der soll den Hintergrund über die gesamte Form mahlen, also auch dort, wo gerade noch mein Image war

EDatabaseError 17. Jul 2006 14:30

Re: Visible eines Image=true aber trotzdem unsichtbar
 
Schau mal in ebay da gibts D2005 PE für 8 Euros.

Mfg
Tobi

Thorben77 17. Jul 2006 14:35

Re: Visible eines Image=true aber trotzdem unsichtbar
 
Zitat:

Zitat von EDatabaseError
Schau mal in ebay da gibts D2005 PE für 8 Euros.

Warum bezahlen, wenn's auch umsonst geht.

EDatabaseError 17. Jul 2006 14:37

Re: Visible eines Image=true aber trotzdem unsichtbar
 
Vllt. hat er kein DSL :stupid:

dino 17. Jul 2006 14:45

Re: Visible eines Image=true aber trotzdem unsichtbar
 
hab DSL, aber immer, wenn es fertig geladen sein sollte, krieg ich ne Fehlermeldung, und muss von vorne anfangen, was ich ziehmlich zum :kotz: finde, weil ich jetzt schon 2 mal versucht hab

EDatabaseError 17. Jul 2006 14:46

Re: Visible eines Image=true aber trotzdem unsichtbar
 
[ot]Was für ein Fehler ;-)[/ot]

dino 17. Jul 2006 14:47

Re: Visible eines Image=true aber trotzdem unsichtbar
 
weiss net mehr genau, dass es nicht gespeichert werden konnte, und irgendwas, dass ich irgendein Admin informieren sollte

EDatabaseError 17. Jul 2006 14:49

Re: Visible eines Image=true aber trotzdem unsichtbar
 
Lad es dir mit Adminrechten runter und speichere es direkt auf C und nicht irgentwo in Eigene Dateien ;-)

dino 17. Jul 2006 15:15

Re: Visible eines Image=true aber trotzdem unsichtbar
 
bin Admin und habs auf dem Desktop gespeichert
übriens ist F mein Hauptlaufwerk

und das ist voll :( Problem behoben
mal sehen, obs jetzt mit Delphi 2005 auch das Hauptproblem behoben ist

inherited 17. Jul 2006 15:26

Re: Visible eines Image=true aber trotzdem unsichtbar
 
hast du genug Speicher frei? Desktop ist sowas wie eigene Dateien unter XP... Speicher es lieber mal nach C: oder von mir aus F:
-.- zu spät

dino 17. Jul 2006 15:39

Re: Visible eines Image=true aber trotzdem unsichtbar
 
ne jetzt hab ich genug Speicher frei und das mit dem Desktop wird auch keine Probleme machen, aber ich hab noch ein riesiges Problem:

ich hatte mal ein Windows, mit Adminrechten und Passwort und das ist jetzt kaputt, aber ich hab ein weiteres Windows daneben installiert, darf aber nicht mehr auf meine alten Sachen zugreifen, kennt jemand das Problem?

Bernhard Geyer 17. Jul 2006 16:03

Re: Visible eines Image=true aber trotzdem unsichtbar
 
Zitat:

Zitat von dino
ich hatte mal ein Windows, mit Adminrechten und Passwort und das ist jetzt kaputt, aber ich hab ein weiteres Windows daneben installiert, darf aber nicht mehr auf meine alten Sachen zugreifen, kennt jemand das Problem?

Neue Frage, neuer Thread :warn:

dino 17. Jul 2006 16:07

Re: Visible eines Image=true aber trotzdem unsichtbar
 
wohin gehört die Frage? hat ja nichts mehr mit Delphi zu tun...

("nicht in dieses Forum" ist leider leider ne mögliche Antwort)

EDatabaseError 17. Jul 2006 16:10

Re: Visible eines Image=true aber trotzdem unsichtbar
 
Wenn du nicht weiter weißt:
Klatsch & Tratsch aber hier gibts auch eine Windows sparte ;-)

Bernhard Geyer 17. Jul 2006 16:11

Re: Visible eines Image=true aber trotzdem unsichtbar
 
Zitat:

Zitat von dino
wohin gehört die Frage? hat ja nichts mehr mit Delphi zu tun...

Wie wäre es mit der Rubrik: "Windows 9x / ME / 2000 / XP / 2003 "

dino 18. Jul 2006 20:52

Re: Visible eines Image=true aber trotzdem unsichtbar
 
hab jetzt Windows auf C: und jetzt hats auch mit Delphi 2005 geklappt, aber wie geht das jetzt mit der Paintbox?
loadfromfile will der nicht :(

inherited 19. Jul 2006 18:37

Re: Visible eines Image=true aber trotzdem unsichtbar
 
Ei bisschen Code bitte

vlees91 19. Jul 2006 19:44

Re: Visible eines Image=true aber trotzdem unsichtbar
 
hmmm
ich glaube es beht um die ameisen (die waren doch von dino, oder????)

3_of_8 19. Jul 2006 19:50

Re: Visible eines Image=true aber trotzdem unsichtbar
 
Jo, waren sie. Aber dino hat bei seinem Code anscheinend eine höhere Geheimhaltung als die CIA.

Sascha L 19. Jul 2006 20:11

Re: Visible eines Image=true aber trotzdem unsichtbar
 
Den Fehler den er hat, kann er nicht mit einer anderen Delphi-Version beheben!

Ihr schreibt immer, dass er es selber übermalt, etc. - das stimmt nicht!

Das gleiche Problem habe ich auch und es betrifft so gut wie alle Komponenten.

Wenn man auf dem Canvas vom Formular ständig etwas zeichnet, weil man z.B. einen Farbverlauf als Hintergrund haben möchte, dann passiert es ständig, dass die Komponenten nicht mehr sichtbar sind. Man muss also hinter jedem Zeichnen ein Repaint für jede einzelne Komponente aufrufen - oder wenn man auf Flackern steht "Invalidate" vom Formular.

3_of_8 19. Jul 2006 20:45

Re: Visible eines Image=true aber trotzdem unsichtbar
 
:roll: Das ist ein Äpfel-und-Birnen-Vergleich.

Er hat ein Image. Du hast eine Form.

Das Canvas einer Form wird ständig überschrieben, immer wenn Repaint; aufgerufen wird.

Das Canvas eines Images wird nicht automatisch überschrieben.

Hawkeye219 19. Jul 2006 20:47

Re: Visible eines Image=true aber trotzdem unsichtbar
 
Zitat:

Zitat von Sascha L
Wenn man auf dem Canvas vom Formular ständig etwas zeichnet, weil man z.B. einen Farbverlauf als Hintergrund haben möchte, dann passiert es ständig, dass die Komponenten nicht mehr sichtbar sind.

Das dürfte aber nicht passieren, wenn man nur in der Behandlungsroutine für den dafür vorgesehenen Event zeichnet: Delphi-Referenz durchsuchenTForm.OnPaint.

Gruß Hawkeye

Sascha L 19. Jul 2006 20:54

Re: Visible eines Image=true aber trotzdem unsichtbar
 
@3_of_8: wieso? er hat doch geschrieben, dass er auf dem Formular zeichnet. Von dem Image war doch nie die Rede. Das Image ist transparent geschaltet und liegt auf dem Formular, auf dem er zeichnet.

@Hawkeye219: Richtig, aber wenn man die Fenstergröße verändert (Resize), dann wird aber nicht neu gezeichnet, sodass man manuell noch mal die Zeichnen-Prozedur aufrufen muss und dann passiert's.

3_of_8 19. Jul 2006 21:04

Re: Visible eines Image=true aber trotzdem unsichtbar
 
Das hat er aber schön kryptisch geschrieben...

Naja, wenn er unbedingt auf sein Formular schreiben muss, muss er halt OnPaint und OnResize überschreiben.

Hawkeye219 19. Jul 2006 21:10

Re: Visible eines Image=true aber trotzdem unsichtbar
 
Zitat:

Zitat von Sascha L
Richtig, aber wenn man die Fenstergröße verändert (Resize), dann wird aber nicht neu gezeichnet, sodass man manuell noch mal die Zeichnen-Prozedur aufrufen muss.

Bei einem (manuellen oder durch das Programm verursachten) Resize wird der OnPaint-Handler des Formulars im Rahmen der Behandlung von WM_PAINT aufgerufen. Ein manueller Aufruf ist nicht notwendig (gerade mit Delphi 6 getestet). Hast du ein kleines Beispielprogramm, welches das von dir beschriebene Verhalten aufweist?

Gruß Hawkeye

3_of_8 19. Jul 2006 21:12

Re: Visible eines Image=true aber trotzdem unsichtbar
 
Na dann reicht OnPaint. Oder auch gleich Repaint.

dino 19. Jul 2006 23:44

Re: Visible eines Image=true aber trotzdem unsichtbar
 
jetzt wo ich auf der anderen festplatte auf dem neuen Windows ein neues besseres Delphi (2005) habe, hab ich den alten quellcode nicht mehr

er gin aber in etwa so:
Delphi-Quellcode:
var i:Integer;
keys:array[0..127] of Boolean;
xf,yf:array[1..3] of Integer;
time,xp,yp,xs,ys,z,bier,i1,live,x1,y1,rl,xsz,ysz:integer;
feld:array[1..18,1..16] of Integer;
bmp0,bmp1,bmp2,bmp3,bmp4,bmp5: Tbitmap;
[...]
for x1:=0 to 19 do
for y1:=0 to 17 do begin
if (x1=0)or(y1=17)or(x1=19) then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp4) else begin
if Feld[x1,y1]=0 then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp0);
if Feld[x1,y1]=1 then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp1);
if Feld[x1,y1]=2 then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp2);
if Feld[x1,y1]=3 then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp3);
if Feld[x1,y1]=4 then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp4);
if Feld[x1,y1]=5 then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp5);
if Feld[x1,y1]=6 then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp1);
if (Feld[x1,y1]=7) and (bier=0) then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp2);
if (Feld[x1,y1]=7) and (bier<>0) then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp0);
if Feld[x1,y1]=8 then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp0);
if Feld[x1,y1]=9 then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp0);

end;

[...]
image1.Top:=xs;
image1.loadfromfile('bild.bmp');
(in den [...] stehen nur ein haufen ifs und son zeug)

jedenfalls hat das im Gegensatz zu bei der PaintBox in Delphi 2005 win32
auch geklappt, nur dass wie gesagt mein Image dauernd überzeichnet wurde, ich hab das mal immer wieder mit refresh glaub ich war das wieder hervorheben lassen, aber das Programm war dann viel langsamer und es flackerte(das bild des Images)
ich arbeite im Moment paar Tutorials durch, wodurch ichs vielleicht auch in Griff kriege, aber da ihr schon diskutiert, könntet ihr mir vllt auch helfen...

Danke im vorraus
MFG Dino

Hawkeye219 20. Jul 2006 08:04

Re: Visible eines Image=true aber trotzdem unsichtbar
 
Dino, wenn du auf dem Canvas des Formulars zeichnen möchtest, solltest du das nur in einer Behandlungsroutine für das Ereignis Delphi-Referenz durchsuchenTForm.OnPaint tun. Damit verhinderst du, daß deine Zeichnung durch andere Ereignisse übermalt wird.

Markiere im Objektinspektor das Formular, gehe auf die Seite "Ereignisse" und klicke doppelt in das Feld neben "OnPaint". Dann sollte Delphi eine neue leere Prozedur im Editorfenster erzeugen oder in die vorhandene Routine springen, falls schon eine da war. Nur in dieser Routine sollten deine Zeichenbefehle stehen. Beachte aber, daß diese Routine bei jedem (Neu-)Zeichnen des Formulars aufgerufen wird. Wenn du dort ständig Bilder von der Festplatte lädst, bremst du deine gesamte Anwendung enorm aus.

Zum Anzeigen von Bildern stellt Delphi die Komponente Delphi-Referenz durchsuchenTImage zur verfügung, zum Zeichnen die Komponente Delphi-Referenz durchsuchenTPaintBox. Du solltest dich intensiv mit diesen Komponenten befassen, bevor du an deinem Programm weiterarbeitest. Vielleicht helfen dir die Tutorials, welche dir an anderer Stelle bereits empfohlen wurden.

Gruß Hawkeye

Thorben77 20. Jul 2006 08:22

Re: Visible eines Image=true aber trotzdem unsichtbar
 
Delphi-Quellcode:
if Feld[x1,y1]=0 then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp0);
if Feld[x1,y1]=1 then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp1);
if Feld[x1,y1]=2 then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp2);
if Feld[x1,y1]=3 then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp3);
if Feld[x1,y1]=4 then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp4);
if Feld[x1,y1]=5 then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp5);
if Feld[x1,y1]=6 then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp1);
if (Feld[x1,y1]=7) and (bier=0) then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp2);
if (Feld[x1,y1]=7) and (bier<>0) then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp0);
if Feld[x1,y1]=8 then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp0);
if Feld[x1,y1]=9 then form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp0);
Dafür gibt es eine wesentlich elegantere Methode:
Delphi-Quellcode:
case Feld[x1, y1] of
  1, 6: form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp1);
  2: form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp2);
  3: form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp3);
  4: form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp4);
  5: form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp5);
  7:
    begin
      if Bier = 0 then
        Form1.Canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp2)
      else
        Form1.Canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp0);
    end;
  8, 9: form1.canvas.Draw(x1*32+70-xs,y1*32+70-ys,bmp0);
end;

dino 2. Okt 2006 13:25

Re: Visible eines Image=true aber trotzdem unsichtbar
 
nun habe ich 2 verschiedene Paintboxen! warum übermalt die eine paintbox die canvas des anderen???
und hab immernoch Probleme damit, dass der Inhalt der Paintbox sichtbar bleiben muss


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:41 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz