Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#11

Re: [TPaintBox] - "Hintergrundfarbe" für Pen.Style

  Alt 7. Jan 2007, 20:51
Zitat von xZise:
Zitat von Muetze1:
1. wenn du das einmal in die Paintbox gezeichnet hast, dann müsstest du bei Änderung der Position der transparenten Bereiche die alten gemalten Pixel weg bekommen. Transparent heisst aber nun mal nicht, dass er dort was "transparentes" hinmalt an der Stelle sondern er das malen dort auslässt.
Und was heißt das?
Das heisst, du musst den Canvas der leer bekommen. Bei transparenten Teilen bedeutet dies, dass der Parent neu gezeichnet werden muss an der Stelle, wo die PaintBox liegt. Dank der VCL würde somit ein TPaintBox.Update helfen.

Zitat von xZise:
Zitat von Muetze1:
2. Wenn du nur eine Farbe in dem Bitmap Transparent haben willst, dann setz die entsprechende Eigenschaft des Bitmaps (wie ich oben schon geschrieben hatte). Delphi-Referenz durchsuchenTBitmap.TransparentMode, Delphi-Referenz durchsuchenTBitmap.TransparentColor, Delphi-Referenz durchsuchenTBitmap.Transparent.
Und wie komme ich an das Bitmap eines PaintBox?
Achtung: Ich rede nicht vom Quellbitmap! Ich rede vom "eingefügten" Bitmap!
(Aber selbst wenn, würde es nicht viel bringen, siehe unten)
Ich rede von deinem "Quellbitmap". Ein TPaintBox hat nur einen Canvas, keine Bitmap oder sonstiges. Genau aus diesem Grund muss beim OnPaint immer der Inhalt der PaintBox neu gezeichnet werden. Wenn du dies nun nicht auf deinem QuellBitmap haben willst, dann füge ein temporäres TBitmap ein, male da dein QuellBitmap rauf, dann deine Linien, dann die Transparenz setzen und diese dann auf den Canvas der PaintBox bringen.

Und wegen dem restlichen Text von dir: Ich kapier nicht wirklich was du willst. So wie ich das verstanden habe, willst du einfach nur eine Strichellinie auf diesem vorher auf die Paintbox gemalte Bitmap hinterlassen, mit der Bedingung, dass die Zwischenräume bei psDashDot nicht mit der Brush.Color gefüllt wird, sondern dort soll das Bitmap durchscheinen.

Wenn dem wirklich so ist, dann weiss ich nicht, was dein Problem ist. Ich habe genau das mal schnell zusammengeklickt und es klappt einwandfrei wenn Brush.Style auf bsClear gesetzt wird. Schau dir den Anhang an, wenn das nicht das ist, was du suchst, dann beschreibe mir das Problem bitte nochmal genau.
Miniaturansicht angehängter Grafiken
psdashdot_on_bitmap_108.png  
Angehängte Dateien
Dateityp: zip psdashdot_on_bitmap_202.zip (44,7 KB, 14x aufgerufen)
  Mit Zitat antworten Zitat