AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Transparentes Bitmap verschieben

Ein Thema von runner · begonnen am 29. Jan 2014 · letzter Beitrag vom 30. Jan 2014
Antwort Antwort
Popov
(Gast)

n/a Beiträge
 
#1

AW: Transparentes Bitmap verschieben

  Alt 30. Jan 2014, 18:11
Ich hab schon beim letzten Posting im Kopf gehabt, dass es da etwas gab, als ich von 10 Jahren mich damit beschäftigte. Aber ich war mir nicht sicher, also habe ich es nicht erwähnt.

Nun habe ich mir die OH wieder etwas genauer angeguckt und ja, es gibt etwas besseres als UnionRect, und zwar Regionen. Mit Regionen kann man eine Lochmaske erstellen. Es wird dann nicht das kleinste gemeinsame Rechteck gebildet wie bei UnionRect, sondern eine Lochmaske. Gezeichnet wird nur in die Maske, der Rest wird ignoriert.

Hier ein Beispiel mit zwei Regionen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  FilePath: String;
  Bmp: TBitmap;
  RgnGesamt, Rgn1, Rgn2: HRGN;
begin
  FilePath := 'C:\WINDOWS\Web\Wallpaper\Grüne Idylle.bmp';

  Bmp := TBitmap.Create;
  try
    Bmp.LoadFromFile(FilePath);

    RgnGesamt := CreateRectRgn(0, 0, 0, 0);
    Rgn1 := CreateRectRgn(100, 100, 200, 200);
    Rgn2 := CreateEllipticRgn(300, 300, 400, 400);
    CombineRGN(RgnGesamt, Rgn1, Rgn2, RGN_OR);

    SelectClipRgn(Canvas.Handle, RgnGesamt);
    Canvas.Draw(0, 0, Bmp);

    SelectClipRgn(Canvas.Handle, 0);
    DeleteObject(RgnGesamt);
    DeleteObject(Rgn1);
    DeleteObject(Rgn2);
  finally
    Bmp.Free;
  end;
end;
beide Regionen werden kombiniert. Mit SelectClipRgn wird dann ein Bereich erstellt in das gezeichnet werden kann.
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:56 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