Servus Leute,
wollte mir en komplett eigenes Fensterdesign für mein Proggi machen! Hatte das zuerst mit den
API Funktionen CreateRectRgn, CreateEllipticalRgn und CombineRgn und anschließend mit SetWindowRgn wo ich dann diese Regionen auf das
Handle meiner Form setzten kann!
War mir allerdings zu blöd nur auf Kreise und Rechtecke zurückgreifen zu müssen! Also habe ich mir ein Proggi geschrieben mit dem ich eine beliebige Region erstelle (ich grenze Pixel für Pixel einer Bitmap aus). Mein Problem ist jetzt aber, wie bekomme ich diese Region abgespeichert um sie später wieder laden zu können???
Mit TFilestream hatte ich's schon probiert, musste dann allerdings frustriert festellten, dass das ja nicht so einfach geht, da THandle ja nur ne Art Zeiger ist! Aber wie komme ich jetz an diese Region die ich erstellt habe???
Hoffe irgendjemand konnte meinem verzweifeltem Versuch euch das Problem zu erklären folgen
*greetZ* Sile
P.S.: Hier nochmal ein paar Codefragmente dazu:
Code:
...
var rgnFinal, rgnTemp: THandle;
x, y: Integer;
begin
//Erstmal eine Rechteeckige Region um das gesamte Bild
rgnFinal:= CreateRectRgn(0,0,bckBitmap.width,bckBitmap.height);
//Anschließend Pixel für Pixel was TRansparentsfarbe
//entspricht aus diesem Rechteck entfernen
for x:= 0 to bckBitmap.width do
begin
for y:= 0 to bckBitmap.height do
begin
if bckBitmap.Canvas.Pixels[x,y] = clblack then
begin
rgnTemp:= CreateRectRgn(x,y,x+1,y+1);
CombineRgn(rgnFinal,rgnFinal,rgnTemp, RGN_XOR);
deleteobject(rgnTemp);
end;
end;
end;
SetWindowRgn(Form1.handle, rgnFinal, true);
deleteobject(rgnFinal);
...