Autor Beitrag
Simon Joker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236
Erhaltene Danke: 1



BeitragVerfasst: Mo 14.04.03 11:52 
Die Procedur CropWindow erzeugt eine Windowregion nach dem übergebenen Bild und weist sie den Übergeben Element zu. Alle Bereiche, mit der in Color übergebenen Farbe werden elimeniert.
UnCropWindow hebt die Region wieder auf.

Der Code stammt von Paul Krestol. Ich habe nur die Farbe als Parameter hinzugefügt.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
procedure CropWindow( Handle: HWnd; Picture : TPicture; Color:TColor );
var
  hrgn, hrgn1 : integer;
  hdc : integer;
  x, y : integer;
begin
  hdc := GetDC( Handle );
  hrgn := CreateRectRgn( 00, Picture.Graphic.Width, Picture.Graphic.Height );
  for x := 1 to Picture.Graphic.Width do
    for y := 1 to Picture.Graphic.Height do
      if Picture.Bitmap.Canvas.Pixels[ x - 1, y - 1 ] = Color then begin
        hrgn1 := CreateRectRgn( x - 1, y - 1, x, y);
        CombineRgn( hrgn, hrgn, hrgn1, RGN_DIFF );
        DeleteObject( hrgn1 );
      end;
  SetWindowRgn( Handle, hrgn, true );
  ReleaseDC( Handle, hdc);
end;

procedure UncropWindow( Handle: HWnd; Picture : TPicture );
var
  hrgn : integer;
  hdc : integer;
begin
  hdc := GetDC( Handle );
  hrgn := CreateRectRgn( 00, Picture.Graphic.Width , Picture.Graphic.Height );
  SetWindowRgn( Handle, hrgn, true );
  ReleaseDC( Handle, hdc );
end;