Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Untergrund meines Bitmap transparent.
ardely - Do 11.10.07 15:32
Titel: Untergrund meines Bitmap transparent.
Wie kann ich den Untergrund meines Bitmap transparent machen.
Ich habe so was ausprobiert geht aber nicht, sehr vielen Dank für ihren Vorschlag.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| ImaDes := TBitmap.Create; ImaDes.Height := 19 ; ImaDes.Width := 50;
ImaDes.Canvas.Brush.Style := bsclear;
ImaDes.Canvas.Font.Color := clblack; ImaDes.Canvas.Font.Style := []; ImaDes.Canvas.Font.Size := iSize;
ImaDes.Canvas.TextOut(0,0,'Mein Text'); |
Grüss,
_frank_ - Do 11.10.07 15:55
was willst du genau transparent machen? der Text verdeckt bei mir das Bild nicht...
möchtest du das hier erzeugte Bitmap transparent über etwas anderes drüberlegen?
Gruß Frank
ardely - Do 11.10.07 16:18
Hallo,
Ja ich wollte nur der Text sichtbar machen und das Untergrund des bitmap (ImaDes) soll transparent sein. Dann später wird dises (ImaDes) bitmap auf ein andres Hautbild hingelegt und der text soll nur sichtbar sein über das Bild.
Grüss.
_frank_ - Do 11.10.07 16:26
warum malst nicht gleich den Text auf das Hauptbild? Wegen der Transparenz des Gesamten Bitmaps gibts u.a. ein Property Transparent(Color):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| var bmp:TBitmap; begin bmp:=TBitmap.create; bmp.width:=100; bmp.height:=20; bmp.Canvas.TextOut(0,0,'Test'); bmp.TransparentColor:=bmp.Canvas.Pixels[0,0]; bmp.Transparent:=true; canvas.Draw(0,0,bmp); bmp.free; end; |
HTH Frank
ardely - Do 11.10.07 16:36
Ich wollte mein frage irgendwie einfach stellen, eigentlich das Bild wird in einem
richedit hinzugefügt.
Ich probiere sofort deinen Code aus. Danke, und sage dir bescheid wie es geht.
ardely - Do 11.10.07 16:57
Sorry, es geht noch nicht, der Untergrund ist noch immer Weiß.
Danke für deinen schnellen Vorschlag, was kannst du mir noch raten!
Grüsse.
_frank_ - Do 11.10.07 17:30
in meinem code geh ich davon aus, dass das Pixel in der linken oberen Ecke (0,0) die transparent zumachende Farbe enthält...
wie gesagt, das einfachste wäre den Text direkt auf das ZielCanvas zu malen.
bei mir funktioniert das ohne Probleme:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm1.Button4Click(Sender: TObject); var bmp:TBitmap; c:TCanvas; begin bmp:=TBitmap.create; bmp.width:=100; bmp.height:=20; bmp.canvas.pen.color:=clred; bmp.Canvas.Pen.width:=2; bmp.Canvas.Brush.Style:=bsClear; bmp.Canvas.TextOut(1,1,'Test'); bmp.TransparentColor:=bmp.Canvas.Pixels[0,0]; bmp.Transparent:=true; c:=TCanvas.Create; c.Handle:=GetDC(richedit1.Handle); c.Draw(4,4,bmp); c.free; bmp.free; end; |
ardely - Do 11.10.07 17:49
Ja, du hast recht aber ich habe kein ZielCanvas (Richedit), danke für deine mühe aber in meinen fall der Code funktioniert nicht!
Ich bin noch am suchen.... Schönen Abend noch..
_frank_ - Do 11.10.07 17:58
ardely hat folgendes geschrieben: |
Ja, du hast recht aber ich habe kein ZielCanvas (Richedit), |
ich hatte auch keins, daher hab ich mir eins geholt...siehe oben, oder versteh ich dich falsch?
ardely hat folgendes geschrieben: |
danke für deine mühe aber in meinen fall der Code funktioniert nicht!
|
vielleicht solltest du da deinen speziellen Fall genauer erläutern. Wenn wir den kennen, können wir auch gezielter testen :)
Gruß Frank
ardely - Do 11.10.07 18:33
Hier ein Bild um mich besser aus zu drücken!
der Untergrund der Richedit ist grün,
Delphi-Quelltext
1:
| RichEdit1.Color := clGreen; |
beim drücken button1 ist das Bild 'Test' in einem weissen Rahmen
im richedit. Das Bild 'Test' soll aber den Untergrund haben wie der Richedit
also nicht weiss sondert transparent...
Danke.
_frank_ - Do 11.10.07 19:26
mal als vergleich mein screenshot....irgendwas machst in deinem Code anders...genau der code von vorhin...mit einem hellblauen Richedit :)
Gruß Frank
ardely - Do 11.10.07 19:37
Habe wieder alles neu gemacht und habe noch immer das selbe problem (Delphi 2005) Hier das Komplette Source-Code.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls;
type TForm1 = class(TForm) RichEdit1: TRichEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var bmp:TBitmap; c:TCanvas; begin bmp:=TBitmap.create; bmp.width:=100; bmp.height:=20; bmp.canvas.pen.color:=clred; bmp.Canvas.Pen.width:=2; bmp.Canvas.Brush.Style:=bsClear; bmp.Canvas.TextOut(1,1,'Test'); bmp.TransparentColor:=bmp.Canvas.Pixels[0,0]; bmp.Transparent:=true; c:=TCanvas.Create; c.Handle:=GetDC(richedit1.Handle); c.Draw(4,4,bmp); c.free; bmp.free; end;
end. |
Grüss
ardely - Fr 12.10.07 18:52
Hallo, ich habe versucht den selben Code mit Delphi 7 aber immer den selben problem!
Habt Ihr noch eine test Lösung dass ich ausprobieren kann!
Vielen dank für Ihre Vorschlage. Danke
_frank_ - Fr 12.10.07 22:43
ich hab das jetzt auch mal in delphi 7 probiert. bei mir ist das bitmap transparent, wie unter D3 auch...machst du noch irgendetwas anders?
kann mir sonst nicht vorstellen, woran es liegen sollte...du hast ein normales Richedit und die Farbe im OI gesetzt?
Gruß Frank
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!