Graphics 和 Matrix 使用注意

Graphics 能夠進行畫圖,Matrix 能夠對畫布內容進行變換c#

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));
相關文章
相關標籤/搜索