![]() |
DC leeren
Ich habe mir von mein Fenster den DC geholt und mit DrawText etwas draufgezeichnet.
Nun, den Text will ich wieder loswerden! Nur: wie mach ich das? |
Re: DC leeren
Hrm.
Ich würde vorschlagen mit Invalidate und Repaint. Kann auch sein das ein Repaint das invalidate automatisch macht, hab grad keine OH vorliegen. |
Re: DC leeren
Ich will ja nix sagen, aber das geht nicht!
|
Re: DC leeren
Wenn Du nur in den Client-Bereich des Fensters malst, d.h den DC mit GetDC geholt hast, dann funktioniert Invalidate.
Wenn Du den DC mit GetWindowDC holst, also auch auf NonClient-Bereiche malen kannst, dann funktioniert Invalidate nicht, dann musst Du Dein Fenster zwingen, seinen NC-Bereich neu zu malen:
Delphi-Quellcode:
Gruß, teebee
SetWindowPos(Handle,0,0,0,0,0,SWP_FRAMECHANGED Or SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER);
|
Re: DC leeren
Sorry Leute, ich hätte sagen sollen, dass der Fenster-DC (und das Fenster selbst) TRANSPARENT sind.
Hab' aber doch 'ne Lösung geunden:
Delphi-Quellcode:
Das geht! :hello:
var wnd: RECT;
SetWindowRgn(DC, CreateRectRgn(0, 0, 0, 0)); GetClientrect(wnd); SetWindowRgn(DC, CreateRectRgnIndirect(wnd)); BtW: Die umständlichkeit der Window-API beim Zeichnen ist zum :kotz: |
Re: DC leeren
Aber du weißt, was du machst. Wöhrend hingegen bei der VC weißt du nicht so genau, was die intern so macht. ;)
|
Re: DC leeren
Das ist das schöne an der API: komplette Kontrolle. Allerdings muss sie durch umständlichkeit und komplexität erkauft werden. :(
|
Re: DC leeren
Nicht unbedingt. Man muss nur einmal kapiert haben wie der Hase läuft. ;)
|
Re: DC leeren
Aber bis man DAS kapiert hat....
dauert's 'ne Weile. |
Re: DC leeren
OT:
Und dann ist für die Katz'. Weil man unter .Net damit nix anfangen kann. :lol: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz