2 Stimmen

Wie zeichne ich eine Bildspiegelung in WinForms?

Ich möchte eine Spiegelung in C# (WinForms) eines Bildes zeichnen, also muss ich in der Lage sein, das Bild horizontal zu spiegeln. Ich weiß, ich kann dies mit image.RotateFlip tun, aber das Problem mit diesem Ansatz ist, dass ich das Bild zweimal spiegeln, so dass ich es wieder die richtige Seite oben auf die nächste Malerei zeichnen kann. Dies zweimal pro Bild zu tun, scheint langsam zu sein.

Ich würde das Bild gerne spiegeln, wenn ich es zeichne, damit ich es nur einmal spiegeln muss, aber ich finde keine Möglichkeit, dies zu tun. Ist dies möglich?

Ein anderer Ansatz, den ich in Erwägung gezogen habe, besteht darin, das Grafikobjekt irgendwie zu spiegeln, das Bild normal zu zeichnen und dann das Grafikobjekt wieder zu spiegeln, damit die nächste Farbe korrekt ist. Wenn dies schneller ist als das Bild zweimal zu spiegeln, ist es möglich, dies zu tun?

Außerdem möchte ich nicht 2 Bilder im Speicher behalten, so dass ich das Bild nicht kopieren und den Klon spiegeln kann.

7voto

Shoban Punkte 22785

Diesen Code habe ich von ici und sehen Sie nach, ob es Ihnen weiterhilft.

using System;
using System.Drawing;
using System.Windows.Forms;

class ImageReflection: Form
{
     Image image = Image.FromFile("Color.jpg");

     public static void Main()
     {
          Application.Run(new ImageReflection());
     }
     public ImageReflection()
     {
          ResizeRedraw = true;

     }
     protected override void OnPaint(PaintEventArgs pea)
     {
          DoPage(pea.Graphics, ForeColor,ClientSize.Width, ClientSize.Height);
     }     
     protected void DoPage(Graphics grfx, Color clr, int cx, int cy)
     {
          int cxImage = image.Width;
          int cyImage = image.Height;

          grfx.DrawImage(image, cx / 2, cy / 2,  cxImage,  cyImage);
          grfx.DrawImage(image, cx / 2, cy / 2, -cxImage,  cyImage);
          grfx.DrawImage(image, cx / 2, cy / 2,  cxImage, -cyImage);
          grfx.DrawImage(image, cx / 2, cy / 2, -cxImage, -cyImage);
     }
}

1voto

Fredou Punkte 19430

modifier

auch etwas in dieser Richtung?

draw(new Bitmap (img).rotateflip(param))

ok, rotateflip gibt kein Bild zurück

dies betrachtend Nur ein Flip ist genug vom Rotateflip, oder?

RotateNoneFlipNone  Specifies no rotation and no flipping.
Rotate90FlipNone    Specifies a 90-degree rotation without flipping.
Rotate180FlipNone   Specifies a 180-degree rotation without flipping.
Rotate270FlipNone   Specifies a 270-degree rotation without flipping.
RotateNoneFlipX Specifies no rotation followed by a horizontal flip.
Rotate90FlipX   Specifies a 90-degree rotation followed by a horizontal flip.
Rotate180FlipX  Specifies a 180-degree rotation followed by a horizontal flip.
Rotate270FlipX  Specifies a 270-degree rotation followed by a horizontal flip.
RotateNoneFlipY Specifies no rotation followed by a vertical flip.
Rotate90FlipY   Specifies a 90-degree rotation followed by a vertical flip.
Rotate180FlipY  Specifies a 180-degree rotation followed by a vertical flip.
Rotate270FlipY  Specifies a 270-degree rotation followed by a vertical flip.
RotateNoneFlipXY    Specifies no rotation followed by a horizontal and vertical flip.
Rotate90FlipXY  Specifies a 90-degree rotation followed by a horizontal and vertical flip.
Rotate180FlipXY Specifies a 180-degree rotation followed by a horizontal and vertical flip.
Rotate270FlipXY Specifies a 270-degree rotation followed by a horizontal and vertical flip.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X