Graphics 可以进行画图,Matrix 可以对画布内容进行变换
Font font = new Font("宋体", 1F); //检测字符串大小 SizeF sizeF = CreateGraphics().MeasureString("abc", font); //displayWidth为实际显示宽度,通过此方式将字体变大 float disX =(float)(displayWidth / sizeF.Width); float disY = (float)(displayHeight / sizeF.Height); Matrix matrix = new Matrix(); //对画布内容进行放大 matrix.Scale(disX, disY); //这里用在panel上生成一个画布 Graphics g = this.drawingPanel.CreateGraphics(); g.Transform = matrix; //这里是画布的显示位置,这里注意x,y的位置是相对于panel左上角的,且注意在进行Matrix 变换后, //1像素的单位已经放大为disX,所以这里要除以 disX 求得实际像素距离 float x = (float)locationX / disX; float y = (float)locationY / disY; // g.DrawString("abc", font, color, new RectangleF(x, y, (float)displayWidth, (float)displayHeight));
原文地址:http://volvo9yue.blog.51cto.com/12265053/1940064