AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Region vom Typ THandle abspeichern
Thema durchsuchen
Ansicht
Themen-Optionen

Region vom Typ THandle abspeichern

Ein Thema von Silenoz84 · begonnen am 11. Mai 2004 · letzter Beitrag vom 12. Mai 2004
 
Silenoz84

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

Region vom Typ THandle abspeichern

  Alt 11. Mai 2004, 01: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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 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