![]() |
weißer Rand um mit Canvas auf Image gezeichneten Rechteck
Hallo Delphi-Fanz! :-D
Ich bin dabei, mit Canvas auf ein transparentes TImage zu malen (kein Bild geladen). Das besondere hierbei ist, dass ich in einem bestimmten Zeitintervall die Größe des TImage ändere (wird größer) und die gezeichnete Figur wieder lösche, bzw. neu + größer zeichne. Ich zeichne mit schwarzer Farbe ein Rechteck, wobei der Rest des TImage transparent bleiben soll. Wird das Rechteck nicht exakt am Rand des TImage erstellt, sondern 1/mehr Pixel dazwischen frei ist/sind, so ist allein der Inhalt zwischen dem schwarzen Rechteckrand und dem Rand des TImage weiß. Der Innenraum des Vierecks bleibt dabei widerum transparent. Male ich nun die Figur genau am Rand (also in der Größe des TImage, so ist das gesamte TImage weiß (der schwarze Rechteckrand ist kurioserweise weg). Wenn ich den Brush-Style auf bsClear setze, so ist nix mehr transparent... Hier mal der Code:
Delphi-Quellcode:
Hier in diesem Beispiel müsste das Rechteck eigentlich genau so groß sein, wie sein TImage, aber wie gesagt, ist alles weiß.
If Image5.Left > 32 Then begin
If Image5.Width < 233 Then Image5.Width := Image5.Width + 3; If Image5.Height < 81 Then Image5.Height := Image5.Height + 1; Image5.Left := Image5.Left - 1; Image5.Top := Image5.Top - 1; end; Image5.Picture := nil; Image5.Canvas.Rectangle(0,0,Image5.Width,Image5.Height); Image5.Canvas.Refresh; Weiß jemand, was los ist? Vielen Dank, Kollegen! Einen schönen sonnigen Tag noch! Viva los tioz! PAX :nerd: |
Re: weißer Rand um mit Canvas auf Image gezeichneten Rechtec
TImage entscheidet selber welche Farbe transparent gezeichnet wird, wenn es nur auf Transparent eingestellt ist und da wird halt die Farbe des ersten Pixels (unten links) genommen.
Es ist aber auch (irgendwie ... sollte was mit transparent+color im OI zu finden sein) mögliche selber festzulegen welche Farbe transparent dargestellt werden soll. |
Re: weißer Rand um mit Canvas auf Image gezeichneten Rechtec
ich hab jetzt mal ein neues testprojekt erstellt. ich lasse dort einfach ein rechteck zeichnen, mehr nicht (also keine größenänderung etc.). immer noch selbiges problem. wenn im objektinspektor transparent auf true gestellt ist, so wird der innere bereich des rechtecks transparent gezeichnet, doch um das rechteck ist alles weiß...
wie wärs, wenn ich mit floodfill rumspiele? [...] hey, klappt. ich fülle den weißen berecih weiß und er ist dann transparent. wahscheinlich wird erst nach dem floodfill der erste pixel links unten als transparente farbe genommen und somit alles weiße enfernt? vielen dank, himitsu! :o viva los tioz! :-D PAX |
Re: weißer Rand um mit Canvas auf Image gezeichneten Rechtec
So richtig verstehe ich dein Problem nicht, aber Vielleicht ist ja auch Image5.Canvas.Pen.Style:=psClear; vor dem Rectangle die Lösung. Damit (oder so ähnlich) wird nämlich der Rahmen ausgeblendet..
|
Re: weißer Rand um mit Canvas auf Image gezeichneten Rechtec
Hab gerade nachgesehn ... das Transparent vom TImage setzt auch nur das Transparent des zugeordneten TBitmap und im TBitMap kannst du dann noch den Modus ändern.
Hiermit wird immer Weis als transparente Farbe verwendet:
Delphi-Quellcode:
Image1.Transparent := True;
Image1.Picture.Bitmap.TransparentMode := tmFixed; Image1.Picture.Bitmap.TransparentColor := clWhite; Zitat:
|
Re: weißer Rand um mit Canvas auf Image gezeichneten Rechtec
ich danke euch! :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:17 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