![]() |
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) |
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. |
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.
|
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
|
Re: Visible eines Image=true aber trotzdem unsichtbar
ist 2005 viel neuer als 3?
|
Re: Visible eines Image=true aber trotzdem unsichtbar
|
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?
|
Re: Visible eines Image=true aber trotzdem unsichtbar
Delphi übermalt deine Images nicht. Das machst du schon selber.
|
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... |
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. |
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 |
Re: Visible eines Image=true aber trotzdem unsichtbar
Schau mal in ebay da gibts D2005 PE für 8 Euros.
Mfg Tobi |
Re: Visible eines Image=true aber trotzdem unsichtbar
Zitat:
![]() |
Re: Visible eines Image=true aber trotzdem unsichtbar
Vllt. hat er kein DSL :stupid:
|
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
|
Re: Visible eines Image=true aber trotzdem unsichtbar
[ot]Was für ein Fehler ;-)[/ot]
|
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
|
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 ;-)
|
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 |
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 |
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? |
Re: Visible eines Image=true aber trotzdem unsichtbar
Zitat:
|
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) |
Re: Visible eines Image=true aber trotzdem unsichtbar
Wenn du nicht weiter weißt:
Klatsch & Tratsch aber hier gibts auch eine Windows sparte ;-) |
Re: Visible eines Image=true aber trotzdem unsichtbar
Zitat:
|
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 :( |
Re: Visible eines Image=true aber trotzdem unsichtbar
Ei bisschen Code bitte
|
Re: Visible eines Image=true aber trotzdem unsichtbar
hmmm
ich glaube es beht um die ameisen (die waren doch von dino, oder????) |
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.
|
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. |
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. |
Re: Visible eines Image=true aber trotzdem unsichtbar
Zitat:
![]() Gruß Hawkeye |
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. |
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. |
Re: Visible eines Image=true aber trotzdem unsichtbar
Zitat:
Gruß Hawkeye |
Re: Visible eines Image=true aber trotzdem unsichtbar
Na dann reicht OnPaint. Oder auch gleich Repaint.
|
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:
(in den [...] stehen nur ein haufen ifs und son zeug)
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'); 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 |
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
![]() 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 ![]() ![]() Gruß Hawkeye |
Re: Visible eines Image=true aber trotzdem unsichtbar
Delphi-Quellcode:
Dafür gibt es eine wesentlich elegantere Methode:
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);
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; |
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. |
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