Entwickler-Ecke
Windows API - Wasserzeichen in bitmap einfügen
Alice - Mo 18.08.08 10:12
Titel: Wasserzeichen in bitmap einfügen
hi,
ich versuche eine art wasserzeichen in eine bitmap einzufügen, was auch ganz gut klappt.
bisher so (zentriert, outlined):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.AddWatermark(bitm:Tbitmap;inp:String); begin with bitm.Canvas do begin Font.Name := 'Arial'; Font.Size := 88; Font.Style := [fsbold]; Brush.Style:= bsClear; Pen.Color := clGray; Pen.Width := 1; BeginPath(Handle); TextOut((bitm.width div 2)-(textwidth(inp) div 2),(bitm.height div 2)-(textheight(inp) div 2), inp); EndPath(Handle); StrokePath(Handle); end; end; |
was müsste ich noch hinzufügen, dass
a.
der text rotiert dargestellt wird (45grad, auch zentriert)
b.
das ganze transparent?, also das der Pen nicht die darunterliegenden farben verdeckt.
cu
alice
Bergmann89 - Mo 18.08.08 11:05
HI,
zu A:
RotateBitmapA [
http://www.delphi-forum.de/viewtopic.php?t=49684&highlight=rotatebitmapa]
zu B:
Das wird nich so einfach, weil Transparenz bei Delhpi bedeutet, das er die Farbe komplett ausblendet.
Entweder du zeichnest abwechselnd einen grauen und einen rosa Pixel und setzt rosa als transparente Farbe,
oder du kombinierst die Farbe deines Wasserzeichens mit der Farbe darunter:
Delphi-Quelltext
1: 2: 3:
| Color := RGB((R1+R2)div 2, (G1+G2)div 2, (B1+B2)div 2,) |
Das ist aber sehr rechenintensiv, muss es denn schnell gehen? oder hast du zum berechnen Zeit? Dann würd ich die 2. Methode nehmen!
MfG Bergmann.
Alice - Mo 18.08.08 15:41
hi,
erstmal thx fürs antworten!
hier geht es um text auf einem bitmap.canvas, das bsp. zeigt, gedrehtes bitmap auf bitmap !?!
ich habe nun folg. lösung gefunden:
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:
| procedure TForm1.AddWatermark(bitm:Tbitmap;inp:String); var lf : TLogFont; tf : TFont; begin with bitm.Canvas do begin Font.Name := 'Tahoma'; Font.Size := 77; Font.Style := [fsbold]; Brush.Style:= bsClear; Pen.Color := clGray; Pen.Width := 1; tf := TFont.Create; try tf.Assign(Font); GetObject(tf.Handle, sizeof(lf), @lf); lf.lfEscapement := 330; lf.lfOrientation := 330; tf.Handle := CreateFontIndirect(lf); Font.Assign(tf); BeginPath(Handle); TextOut((bitm.width div 2)-(trunc(textwidth(inp) / 1.95)),(bitm.height div 2)+(trunc(textheight(inp) / 2.55)), inp); EndPath(Handle); StrokePath(Handle); finally tf.free; end; end; end; |
was dann so ...(anhang) aussieht.
cu
alice
Bergmann89 - Di 19.08.08 02:16
HI,
die Funktion die ich dir gezeigt hat geht doch trotzdem: Text auf Canvas zeichnen und dann einfach die Bitmap drehen, also dreht sich der Text auch mit...oder irre ich mich jetzt?
MfG Bergmann.
Alice - Di 19.08.08 04:39
Bergmann89 hat folgendes geschrieben: |
HI,
die Funktion die ich dir gezeigt hat geht doch trotzdem: Text auf Canvas zeichnen und dann einfach die Bitmap drehen, also dreht sich der Text auch mit...oder irre ich mich jetzt?
MfG Bergmann. |
hi,
ja! stimmt. :wink:
cu
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!