How to Clip with an Axis-Aligned Clip Rectangle
In diesem Thema wird beschrieben, wie ein Bild mit einem achsenbündigen Cliprechteck abgeschnitten wird. Dieser Ansatz erzeugt nur rechteckige Clips, da die Inhaltsgrenze an der Achse des Rechtecks ausgerichtet ist. Dieser Ansatz ist effizienter als die Verwendung von Ebenen mit den Inhaltsgrenze. Weitere Informationen finden Sie unterÜbersicht über Ebenen.
So clipen Sie mit einem an der Achse ausgerichteten Cliprechteck
Laden Sie das ursprüngliche Image aus einer Ressource. Informationen zum Laden einer Bitmap finden Sie unter Laden einer Bitmap aus einer Ressource.
Rufen Sie ID2D1RenderTarget::P ushAxisAlignedClip auf, um ein Rechteck anzugeben. Die Renderingbefehle werden am Rechteck abgeschnitten.
Paint das ursprüngliche Image.
Rufen Sie ID2D1RenderTarget::P opAxisAlignedClip auf, um den letzten an der Achse ausgerichteten Clip aus dem Renderziel zu entfernen.
In der folgenden Abbildung beträgt die ursprüngliche Bitmap auf der linken Seite beispielsweise 200 * 130 Pixel. Die Bitmap auf der rechten Seite ist die ursprüngliche Bitmap, die auf das am Achsen ausgerichtete Cliprechteck abgeschnitten ist. Die Dimensionen sind (20, 20) bis (100, 100).

Um das abgeschnittene Bild zu erstellen, erstellen Sie eine Rechteckstruktur als Ausschneidebereich. 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();