繁体   English   中英

Winforms转换

[英]Winforms Transformation

当前正在开发的应用程序有很多图纸。 图纸的原点从Left,Bottom而不是Top,Left开始 除“ DrawingString ”外,工程图工作完美。

Graphics g;  
g.TranslateTransform(0, Height);  
g.ScaleTransform(1, -1);

//All drawings  

g.DrawString("1", new Font("Segoei UI", 9), Brushes.Green, new Point(x, y));

我得到的结果是颠倒的文本[![在此处输入图像描述] [1]] [1] 我只想绘制法线文本 ,其余的图应该始终从左下角开始?

编辑

    private void panel1_Paint(object sender,PaintEventArgs e)
    {
        var g = e.Graphics;
        var height = panel1.Height;
        g.TranslateTransform(0,height);
        g.ScaleTransform(1,-1);
        g.DrawRectangle(new Pen(Brushes.Black,1),new Rectangle(10,10,100,100));
        g.DrawString("Test",new Font("Segoei UI",9),Brushes.Green,new Point(10,110));
    }

结果
在此处输入图片说明

我只希望翻转文本。 保持原样

再次翻转。

请参见下面的示例。 文本“ 星期日 ”正常显示。 然后我们转置图形对象的矩阵并写入Monday ,因此Monday在Y轴上出现横向反转,最后我们再次翻过Y轴,这样它就恢复了其自身的原始状态,从而可以正常地写入Tuesday

在此处输入图片说明

private void Form1_Paint(object sender, PaintEventArgs e)
{
    var graphics = e.Graphics; // this.CreateGraphics();
    var font = new Font("Georgia", 12.0F);
    var brush = new SolidBrush(Color.Black);

    var pointF = new PointF(20F, 20F);
    graphics.DrawString("Sunday", font, brush, pointF);

    graphics.ScaleTransform(1F, -1F);
    pointF = new PointF(10F, -210F);
    graphics.DrawString("Monday", font, brush, pointF);

    graphics.ScaleTransform(1, -1);
    pointF = new PointF(200F, 200F);
    graphics.DrawString("Tuesday", font, brush, pointF);

    brush.Dispose();
    font.Dispose();
}

在代码中执行此操作,请确保计算要在其中显示文本的Y轴的值。

g.ScaleTransform(1,-1);
g.DrawRectangle(new Pen(Brushes.Black,1),new Rectangle(10,10,100,100));

g.ScaleTransform(1,-1);
g.DrawString("Test",new Font("Segoei UI",9),Brushes.Green,new Point(10, -110));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM