AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi weißer Rand um mit Canvas auf Image gezeichneten Rechteck
Thema durchsuchen
Ansicht
Themen-Optionen

weißer Rand um mit Canvas auf Image gezeichneten Rechteck

Ein Thema von PAX · begonnen am 3. Mai 2006 · letzter Beitrag vom 3. Mai 2006
Antwort Antwort
Benutzerbild von PAX
PAX

Registriert seit: 22. Jun 2003
Ort: Karlsruhe
88 Beiträge
 
Delphi 7 Personal
 
#1

weißer Rand um mit Canvas auf Image gezeichneten Rechteck

  Alt 3. Mai 2006, 11:18
Hallo Delphi-Fanz!

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:
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;
Hier in diesem Beispiel müsste das Rechteck eigentlich genau so groß sein, wie sein TImage, aber wie gesagt, ist alles weiß.

Weiß jemand, was los ist?

Vielen Dank, Kollegen!

Einen schönen sonnigen Tag noch!

Viva los tioz!



PAX
Andreas
"Wenn man irgendwann mal von allen akzeptiert wird, dann weiß man, dass man irgendwas falsch gemacht hat." Zitat: Herr Weidner

  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#2

Re: weißer Rand um mit Canvas auf Image gezeichneten Rechtec

  Alt 3. Mai 2006, 11:23
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von PAX
PAX

Registriert seit: 22. Jun 2003
Ort: Karlsruhe
88 Beiträge
 
Delphi 7 Personal
 
#3

Re: weißer Rand um mit Canvas auf Image gezeichneten Rechtec

  Alt 3. Mai 2006, 14:09
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!


viva los tioz!



PAX
Andreas
"Wenn man irgendwann mal von allen akzeptiert wird, dann weiß man, dass man irgendwas falsch gemacht hat." Zitat: Herr Weidner

  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#4

Re: weißer Rand um mit Canvas auf Image gezeichneten Rechtec

  Alt 3. Mai 2006, 14:16
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..
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#5

Re: weißer Rand um mit Canvas auf Image gezeichneten Rechtec

  Alt 3. Mai 2006, 15:01
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 von OH:
tmAuto
Es wird die Farbe des Pixels ganz links unten im Bitmap-Bild verwendet.

tmFixed
Die transparente Farbe wird explizit zugewiesen und mit dem Bitmap-Objekt gespeichert.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von PAX
PAX

Registriert seit: 22. Jun 2003
Ort: Karlsruhe
88 Beiträge
 
Delphi 7 Personal
 
#6

Re: weißer Rand um mit Canvas auf Image gezeichneten Rechtec

  Alt 3. Mai 2006, 22:52
ich danke euch!
Andreas
"Wenn man irgendwann mal von allen akzeptiert wird, dann weiß man, dass man irgendwas falsch gemacht hat." Zitat: Herr Weidner

  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz