首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Winforms变换

Winforms变换
EN

Stack Overflow用户
提问于 2018-04-11 08:35:06
回答 1查看 177关注 0票数 0

目前正在开发的应用程序有很多图纸。图的起源从左开始,底部代替Top,左开始。除了"DrawingString".之外,绘图工作得很完美

代码语言:javascript
复制
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));

我得到的结果是倒过来的文本,我只想画文本普通的,其余的图纸应该总是从左下角开始吗?

编辑

代码语言:javascript
复制
    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));
    }

结果

我只想把课文翻过来。保持图纸的原样

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-11 09:21:59

再翻一遍。

参见下面的示例。文本Sunday显示正常。然后我们转换图形对象的矩阵并编写,这样星期一在Y轴上出现横向倒置,最后我们再一次翻转Y轴,使它恢复到原来的状态,然后编写,这通常是正常的。

代码语言:javascript
复制
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轴的值。

代码语言:javascript
复制
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));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49770307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档