So wird's machen: Clip mit einem Axis-Aligned Clip Rectangle

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 die Achse des Rechtecks ausgerichtet sind. Dieser Ansatz ist effizienter als die Verwendung von Ebenen mit den Inhaltsgrenzen. Weitere Informationen finden Sie unter "Übersicht überLayers".

So clipen 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 auf das Rechteck zugeschnitten.

  3. Paint 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 beispielsweise die ursprüngliche Bitmap auf der linken Seite 200*130 Pixel. Die Bitmap auf der rechten Seite ist die ursprüngliche Bitmap, die auf das Achse ausgerichtete Cliprechteck zugeschnitten ist. Die Abmessungen sind (20, 20) bis (100, 100).

illustration of a goldfish bitmap before and after the bitmap is clipped

Um das zugeschnittene Bild zu erstellen, erstellen Sie eine Rechteckstruktur als Clippingbereich. Rufen Sie PushAxisAlignedClip mit dem Clippingbereich auf, und zeichnen Sie das ursprüngliche Bild. 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