Autor Beitrag
CJ(lux)
Hält's aus hier
Beiträge: 4

Win 7 Ultimate 64-bit
Delphi 2010 Architect, LabVIEW 2009 Student
BeitragVerfasst: Mo 30.08.10 15:40 
Hi,

Also, ich habe 2 Komponente auf meiner Form, eine TImage und eine TPaintBox.

-Die TImage wird permanent immer neu mit vielen Vierecken mit verschiedenen Farben gefüllt.
-Auf meine PaintBox soll beim Programmstart ein einmaliger Raster gezeichnet werden, und dieser soll immer im Vordergrund auf der TImage sein.

Mein Problem ist dieser, dass wenn ich die TImage 'befülle' verschwindet mein Raster auf der Paintbox..

Frage:
Wie stelle ich es an, dass mein Raster immer Sichtbar bleibt?


mfG
CJ


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mo 30.08.2010 um 15:42
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mo 30.08.10 15:48 
Hallo und :welcome: im DF!

Ich hoffe du zeichnest die Vierecke nicht im selbst im TImage? Wenn doch, würd ich beides in die Paintbox schmeißen.

zu deinem Problem: Zeichne das Raster auf ein TBitmap (sogenanntes Off-Screen Bitmap) und zeichne das im OnPaint-Ereigniss von der Paintbox einfach immer auf die Paintbox.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
CJ(lux) Threadstarter
Hält's aus hier
Beiträge: 4

Win 7 Ultimate 64-bit
Delphi 2010 Architect, LabVIEW 2009 Student
BeitragVerfasst: Mo 30.08.10 22:50 
Hey, danke für deine Antwort! Dann muss ich mir zuerst noch das mit den Bitmaps anschaun ;)
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Mo 30.08.10 23:03 
Moin!

Zur Paintbox wäre zu erwähnen, dass sie nicht dauerhaft bemalt werden kann - sie ist absichtlich wie eine abwischbare Tafel.

Die Paintbox-Komponente hat ein OnPaint-Ereignis, in dem du alles auf sie zeichnen kannst. Der Grund dafür ist der, dass Windows zu bestimmten Zeitpunkten(etwa, wenn ein anderes Fenster darübergezogen wird) Anweisung gibt, die Komponente neu zu zeichnen.

Dann wird die Methode OnPaint aufgerufen, und du kannst individuell auf dieses Repaint reagieren. Meißt geschieht das, indem du die fixen Teile deiner Grafik von einer Bitmap per StretchDraw/Draw herüberkopierst, dann einige stark bewegliche darüberzeichnest.

Dazu kannst du auch wieder andere Bitmaps nehmen, bei denen du die Eigenschaft .Transparent auf true stellst und sie dann per (Stretch)Draw in deine Zeichnung übernimmst.

Ein Repaint(und die dazugehörige Methode OnPaint) kannst du auch manuell mit dem Aufruf von Paintbox1.Repaint; auslösen(beispielsweise in einem Timer).

lg,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)