Entwickler-Ecke
Multimedia / Grafik - Zeichnen in mehreren Ebenen
Hack Webber - Di 04.02.03 15:31
Titel: Zeichnen in mehreren Ebenen
Hallo zusammen,
ich versuche verzweifelt mehrere Ebenen zu zeichen. Da ich an einen oszilloskop programm arbeite, würde ich gerne das Raster in der ersten ebene zeichenen und das signal in der zweiten. Wenn ich nun das signal entferne möchte ich einen unversehrten Hintergrund haben ohne ihn neu zeichen zu müßen. Ich möchte aber kein DirectX benutzen.
Kennt jemand eine Möglichkeit?
Aya - Di 04.02.03 16:19
Hi,
nimm einfach 2 TImage's... :)
Die packste genau übereinander und machst "Transparent = true"
Dann stellste als Transparent Color noch Weiß (oder was du willst) ein, und dann sollte es gehen...
Au'revoir,
Aya
Hack Webber - Di 04.02.03 16:40
Titel: Das geht so nicht
Du meinst
Quelltext
1:
| Image2.Picture.Bitmap.TransparentColor := clWhite; |
es wird immernoch weiß angezeigt und es flackert wie sau
Moderiert von
Tino: Code-Tags hinzugefügt.
Aya - Di 04.02.03 16:47
gegen das Flackern mach mal im OnCreate:
Quelltext
1:
| Form1.DoubleBuffered.=True; |
und für das Transparent...
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| with Image1.Picture.Bitmap do begin Transparent:=true; TransparentColor:=clWhite; Canvas.Brush.Color:=clWhite; Canvas.FillRect(Rect(0,0,Image1.Width,Image1.Height)); Canvas.Pen.Color:=clBlack; Canvas.LineTo(100,100); end; |
Das sollte gehen.
Au'revoir,
Aya~
PS: Du mußt allerdings ein TBitmap geladen haben. mit JPEG etc geht's net
Hack Webber - Di 04.02.03 16:58
Es ist das zweit Image zwar transparent.
Aber wenn ich darauf was zeichne ist das garnicht zu sehn.
Auch nicht gerade gut ;-)
Hack Webber - Di 04.02.03 17:00
mein onCreate sieht so aus :
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm1.FormCreate(Sender: TObject); begin Form1.DoubleBuffered:=True; Image1.Picture.Bitmap.Canvas.Brush.Color := clRed; Image1.Picture.Bitmap.Canvas.FillRect(Rect(0, 0, Image1.Width, Image1.Height));
Image2.Picture.Bitmap.Transparent := True; Image2.Picture.Bitmap.TransparentColor := clWhite; Image2.Picture.Bitmap.Canvas.Brush.Color := clWhite; Image2.Picture.Bitmap.Canvas.FillRect(Rect(0,0,Image2.Width,Image2.Height));
Image2.Picture.Bitmap.Canvas.Brush.Color := clBlack; Image2.Picture.Bitmap.Canvas.Rectangle(PosX, 20, PosX + 10, 30);
PosX := 20;
Application.OnIdle := Workloop; end; |
Moderiert von
Tino: Code-Tags hinzugefügt.
Aya - Di 04.02.03 17:08
Hi,
wie gesagt... du mußt erstmal ein Bitmap laden... :)
Image1.Picture.Bitmap.LoadFromFile()
Ne andere lösung dafür weiß ich leider nich ^^
Au'revoir,
Aya
Hack Webber - Di 04.02.03 17:11
Ich glaub ich habs. Danke mal. Ich hoffe das das klappt.
Falls jemand noch ne Lösung hat. Bitte melden.
Simon Joker - Mi 05.02.03 11:21
Hi
ihr habt vergessen der Bitmap zusagen wie gross sie denn nun sein soll!
Tut's einfach so:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| ...
Image1.Picture.Bitmap.Canvas.Brush.Color := clRed; //Füge das noch ein !!!! Image1.Picture.Bitmap.Width:=Image1.Width; Image1.Picture.Bitmap.Height:=Image1.Height; //-----
Image2.Picture.Bitmap.Transparent := True; Image2.Picture.Bitmap.TransparentColor := clWhite; Image2.Picture.Bitmap.Canvas.Brush.Color := clWhite; //Füge das noch ein !!!! Image2.Picture.Bitmap.Width:=Image2.Width; Image2.Picture.Bitmap.Height:=Image2.Height; //----- //Zum Testen Image2.Picture.Bitmap.Canvas.MoveTo(0,0); Image2.Picture.Bitmap.Canvas.LineTo(Image2.Width,Image2.Height); ... |
Bei mir funktioniert es nur wenn das Image auf transparent gesetzt ist. Sonst wird das automatisch wieder auf transparent = false gesetzt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!