-1

本当に頭痛の種になっている問題について、助けが必要です。これは、ユーザーが画像ファイルを読み込んでから、画像を時計回りまたは反時計回りに90度回転できるようにするアプリケーションです。コードは正常に機能しますが、ユーザーが画像を時計回りに回転させてから、反時計回りに回転させて元の位置に戻すことにした場合、画像は本来あるべき場所にありません。私はc#を初めて使用するため、何が欠けているのかわかりません。以下は、時計回りの回転に使用しているコードです。

private int cW = 0;
private void button6_Click(object sender, RoutedEventArgs e)
{
    RotateTransform rotateTransform = new RotateTransform();
    rotateTransform.CenterX = image1.ActualWidth / 2.0;
    rotateTransform.CenterY = image1.ActualHeight / 2.0;
    cW += 90;

    rotateTransform.Angle = cW;

    TransformGroup transformGroup = new TransformGroup();
    transformGroup.Children.Add(rotateTransform);

    image1.RenderTransform = transformGroup; 
}

if/elseステートメントを使用してコードを完全に変更しました。以下は私が探していた結果を私に与えます。

RotateTransform cwRotateTransform;
private void button6_Click(object sender, RoutedEventArgs e)
{
    if (cwRotateTransform == null)
    {
        cwRotateTransform = new RotateTransform();
    }

    image1.LayoutTransform = cwRotateTransform;

    if (cwRotateTransform.Angle == 360)
        cwRotateTransform.Angle = 0;

    else cwRotateTransform.Angle += 90;
}

反時計回りの場合は、「90」を「-90」に変更しますcwRotateTransform.Angle

4

1 に答える 1

0

これは、ピクチャ ボックスと、rotateflip を使用するビットマップを使用して、私にとっては問題なく機能します。

Bitmap bitmapPicturebox1;

private void Form1_Load(object sender, EventArgs e)
{
    pictureBox1.ImageLocation = @"C:\Wallpaper.jpg";
}
private void btnLeft_Click(object sender, EventArgs e)
{
    bitmapPicturebox1 = new Bitmap(pictureBox1.Image);
    bitmapPicturebox1.RotateFlip(RotateFlipType.Rotate90FlipNone);
    pictureBox1.Image = bitmapPicturebox1;
}  

private void btnRight_Click(object sender, EventArgs e)
{
    bitmapPicturebox1 = new Bitmap(pictureBox1.Image);
    bitmapPicturebox1.RotateFlip(RotateFlipType.Rotate270FlipNone);
    pictureBox1.Image = bitmapPicturebox1;
}
于 2013-02-13T18:17:52.920 に答える