Ausschneiden mit einem Axis-Aligned Cliprechteck

In diesem Thema wird beschrieben, wie Sie ein Bild mit einem achsenbündigen Cliprechteck ausschneiden. Dieser Ansatz erzeugt nur rechteckige Clips, da die Inhaltsgrenzen an der Achse des Rechtecks ausgerichtet sind. Dieser Ansatz ist effizienter als die Verwendung von Ebenen mit den Inhaltsgrenzen. Weitere Informationen finden Sie unterÜbersicht über Ebenen.

So klammern Sie mit einem achsenbündigen Cliprechteck

  1. Laden Sie das ursprüngliche Bild aus einer Ressource. Informationen zum Laden einer Bitmap finden Sie unter Laden einer Bitmap aus einer Ressource.

  2. Rufen Sie ID2D1RenderTarget::P ushAxisAlignedClip auf, um ein Rechteck anzugeben. Die Renderingbefehle werden an das Rechteck gekappt.

  3. Zeichnen Sie das originale Bild.

  4. Rufen Sie ID2D1RenderTarget::P opAxisAlignedClip auf, um den letzten achsenbündigen Clip aus dem Renderziel zu entfernen.

In der folgenden Abbildung ist die ursprüngliche Bitmap auf der linken Seite beispielsweise 200*130 Pixel. Die Bitmap auf der rechten Seite ist die ursprüngliche Bitmap, die an das achsenorientierte Cliprechteck gekappt wurde. Die Dimensionen sind (20, 20) bis (100, 100).

Abbildung einer Goldfisch-Bitmap vor und nach dem Abschneiden der Bitmap

Um das abgeschnittene Bild zu erstellen, erstellen Sie eine Rechteckstruktur als Abschneidebereich. Rufen Sie PushAxisAlignedClip mit dem Clippingbereich auf, und zeichnen Sie das Originalbild. Rufen Sie PopAxisAlignedClip auf, um den Clip aus dem Renderziel zu entfernen. Dies wird im folgenden Code veranschaulicht.

pRT->PushAxisAlignedClip(
    D2D1::RectF(20, 20, 100, 100),
    D2D1_ANTIALIAS_MODE_PER_PRIMITIVE
    );

pRT->FillRectangle(D2D1::RectF(0, 0, 200, 133), m_pOriginalBitmapBrush);
pRT->PopAxisAlignedClip();

Direct2D-Referenz