Autor |
Beitrag |
Alice
      
Beiträge: 120
|
Verfasst: Mo 18.08.08 10:12
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
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Mo 18.08.08 11:05
HI,
zu A: 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.
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
Alice 
      
Beiträge: 120
|
Verfasst: 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
Einloggen, um Attachments anzusehen!
|
|
Bergmann89
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: 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.
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
Alice 
      
Beiträge: 120
|
Verfasst: 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.
cu
|
|
|