在Form中画标尺

        private void Prt_CardForm_Paint(object sender, PaintEventArgs e)
        {
            //使用窗体直接绘制效果不错,但因为要画坐标线时必须的刷新导致这个老闪,有点不爽啊

            Graphics g = e.Graphics;
            Font font = new Font("Arial", 7);
            //Draw X            
            int width = this.Width;
            for (int i = 0; i <= width; i++)
            {
                SizeF size = g.MeasureString(Convert.ToString(i / 10), font);
                int x = (int)(i / 25.4 * g.DpiX);
                Point start = new Point(x, 30);
                Point end = new Point(x, 30 - 5);
                if (i % 5 == 0)
                {
                    end = new Point(x, 30 - 10);
                }
                if (i % 10 == 0 && i > 0)
                {
                    end = new Point(x, 30 - 15);
                    g.DrawString(Convert.ToString(i / 10), font, Brushes.Gray, new PointF(x - size.Width / 2, 15 - size.Height));
                }
                g.DrawLine(Pens.Gray, start, end);
            }
            //Draw Y
            int height = this.Height;
            for (int i = 0; i <= height; i++)
            {
                SizeF size = g.MeasureString(Convert.ToString(i / 10), font);
                int y = (int)(i / 25.4 * g.DpiY);
                Point start = new Point(30, y);
                Point end = new Point(30 - 5, y);
                if (i % 5 == 0)
                {
                    end = new Point(30 - 10, y);
                }
                if (i % 10 == 0 && i > 0)
                {
                    end = new Point(30 - 15, y);
                    g.DrawString(Convert.ToString(i / 10), font, Brushes.Gray, new PointF(15 - size.Width, y - size.Height / 2));
                }
                g.DrawLine(Pens.Gray, start, end);
            }
        }

    为了应对两个标尺闪烁太厉害的问题,只好使用两个PictureBox来画标尺,奇怪了,在PictureBox上面画标尺就比较稳定了!

    实际效果如图:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值