次の方法で共有


方法 : イメージを回転、反転、および傾斜させる

更新 : 2007 年 11 月

元のイメージの左上隅、右上隅、および左下隅に対して、それぞれ変換後の点を指定して、イメージを回転、反転、および傾斜させることができます。この 3 つの変換後の点によって、元の四角形イメージを平行四辺形に変換するアフィン変換が決定されます。

使用例

たとえば、元のイメージが、左上隅が (0, 0)、右上隅が (100, 0)、左下隅が (0, 50) にある四角形だとします。これらの 3 つの点を、次に示す変換後の点に割り当てるとします。

変換前の点

変換後の点

左上隅 (0, 0)

(200, 20)

右上隅 (100, 0)

(110, 100)

左下隅 (0, 50)

(250, 30)

元のイメージと、変換後の平行四辺形を次の図に示します。元のイメージは傾斜され、反転され、回転され、そして平行移動されています。元のイメージの上辺は、変換前は x 軸に沿っていましたが、変換後は点 (200, 20) と点 (110, 100) を結ぶ直線になっています。元のイメージの左辺は、変換前は y 軸に沿っていましたが、変換後は点 (200, 20) と点 (250, 30) を結ぶ直線になっています。

ストライプ

同じ変換を写真に適用した場合を次の図に示します。

変換クライマ

同じ変換をメタファイルに適用した場合を次の図に示します。

変換メタファイル

最初の図で示したイメージを作成する例を次に示します。

' New Point(200, 20)  = destination for upper-left point of original
' New Point(110, 100) = destination for upper-right point of original
' New Point(250, 30)  = destination for lower-left point of original
Dim destinationPoints As Point() = { _
    New Point(200, 20), _
    New Point(110, 100), _
    New Point(250, 30)}

Dim image As New Bitmap("Stripes.bmp")

' Draw the image unaltered with its upper-left corner at (0, 0).
e.Graphics.DrawImage(image, 0, 0)

' Draw the image mapped to the parallelogram.
e.Graphics.DrawImage(image, destinationPoints)

    Point[] destinationPoints = {
new Point(200, 20),   // destination for upper-left point of 
                      // original
new Point(110, 100),  // destination for upper-right point of 
                      // original
new Point(250, 30)};  // destination for lower-left point of 
    // original

    Image image = new Bitmap("Stripes.bmp");

    // Draw the image unaltered with its upper-left corner at (0, 0).
    e.Graphics.DrawImage(image, 0, 0);

    // Draw the image mapped to the parallelogram.
    e.Graphics.DrawImage(image, destinationPoints);

コードのコンパイル方法

前述の例は Windows フォームと一緒に使用することが想定されていて、Paint イベント ハンドラのパラメータである PaintEventArgse が必要です。Stripes.bmp は、必ずシステム上で有効なイメージへのパスに置き換えてください。

参照

その他の技術情報

イメージ、ビットマップ、アイコン、およびメタファイルの操作