在c#

时间:2016-01-17 17:06:24

标签: c# graphics bitmap rotation

我有以下代码,我写的是尝试旋转位图(这是一个测试)的想法是采取位图并旋转一定程度的度数,然后使用win form在屏幕上绘制

protected override void OnDoubleClick(EventArgs e)
    {
        base.OnDoubleClick(e);
        Graphics g = this.CreateGraphics();
        Bitmap b = new Bitmap(path);
        g.Clear(Color.White);
        imagePosition = Cursor.Position;
        b = RotateImage(b, 45);
        g.DrawImage(b, new Point(100, 100));
    }
    public Bitmap RotateImage(Bitmap b, float angle)
    {
        Bitmap returnBitmap = new Bitmap(b.Width, b.Height);
        returnBitmap.SetResolution(b.HorizontalResolution, b.VerticalResolution);
        Graphics g = Graphics.FromImage(returnBitmap);
        g.TranslateTransform((float)b.Width / 2, (float)b.Height / 2);
        g.RotateTransform(angle);
        g.TranslateTransform(-(float)b.Width / 2, -(float)b.Height / 2);
        g.DrawImage(b, new Point(0, 0));
        return returnBitmap;
    }

这是旋转前的图像     

这是旋转45度后的图像,如代码所示     

1 个答案:

答案 0 :(得分:0)

它被裁剪的原因是没有足够的空间来显示它的旋转。对角线长于两侧(毕达哥拉斯)。

您需要为图像腾出更多空间,然后才能显示OK。你如何做到这将取决于图像的内容。