Jo ich hab da ein Problem ...also ich zeichne etwas auf die PaintBox , so wenn man jetzt aber das fenster verzieht oder über den rand des Bildschirm bewegt löscht man das gemalte...meine frage wie kann man das verhindern ???Das ist nämlich ein sehr blöder Bug ne <_>
--
Greetz to xD Helldog,bloody,Raiden,Chaik,Chuck und wer wars noch ...*überleg* dadie,Jesus,Crash und Manie
Ich nehme an du meinst, dass sich der zerstörte Bereich nicht neu malt. (Oder dass der Bereich zerstört wird beim Resize des Bereiches, da das Flag dazu gesetzt ist).
Ist normal bei Windows-Fenstern. Es wird nur gemerkt was sichtbar ist. Wenn dein Fenster von anderen Fenstern oder vom Rand des Monitors überlappt wird und danach wieder sichtbar wird, ist dieser Bereich "invalid" und muss neugezeichnet werden. Windows-Programme senden da die "WM_PAINT" Message an den Windows-Prozess. In diesem Abschnitt könntest du dann das Bild neu auf das Objekt legen oder nur den kleinen Abschnitt, der zerstört wurde neu zeichnen. Per "InvalidateRect()" Befehl kannst du diese Fenster-"Zerstörtung" auch simulieren und dirtekt einen Bereich auswählen der zum Neuzeichnen gekennzeichnet sein soll.
Genauer kann ich dir das nicht erklären da ich nicht weiß welche Sprache du eigentlich verwendest und in wie fern du dich mit der WinAPI auskennst.
Huups ..ich hab gedacht wenn ich T PaintBox schreibe weiss jeder das ich Delphi habe ..egal ..kann man das nicht auch irgendwie anders lösen als ein Stange Routinen zu schreiben die das macht ..und ein Problem hab ich noch ..ich weiss ja auch nicht was der Benutzer gemacht hat und kann es deswegen nicht wieder malen >_>
--
Greetz to xD Helldog,bloody,Raiden,Chaik,Chuck und wer wars noch ...*überleg* dadie,Jesus,Crash und Manie
am besten du malst in ein internes TBitmap oder TPicture objekt und blittest das dann beim neu-zeichnen (OnPaint event von TPaintBox). Hier mal nen beispiel: