Einzelnen Beitrag anzeigen

Silenoz84

Registriert seit: 11. Mai 2004
Ort: Frankfurt
18 Beiträge
 
#1

Region vom Typ THandle abspeichern

  Alt 11. Mai 2004, 02:17
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);
...
  Mit Zitat antworten Zitat