我打算使用Texture Brush繪製相同厚度的線條。 但是線條的厚度看起來不規則。當使用TextureBrush時,線條看起來不規則厚度
如果可以的話,我想不要以0.1mm爲單位停止繪製。 因爲用戶的代碼差不多完成了。
如果您有想法,我會很感激。
//Brush User's Code
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
// I need to draw by 0.1mm unit like CAD.
e.Graphics.PageUnit = GraphicsUnit.Millimeter;
e.Graphics.PageScale = 0.1F;
Point leftTop = new Point(2, 2);
using(TextureBrush aBrush = myBrush()){
aBrush.TranslateTransform(leftTop.X, leftTop.Y);
e.Graphics.FillRectangle(aBrush, leftTop.X,leftTop.Y, 90, 1000);
}
}
//BrushMaker Code
private TextureBrush myBrush()
{
Bitmap bitmapCanvas = new Bitmap(20, 10);
Graphics g = Graphics.FromImage(bitmapCanvas);
Pen myPen = new Pen(Brushes.Black, 2F);
g.DrawLine(myPen, 2, 5, 18, 5);
var brush = new TextureBrush(bitmapCanvas);
myPen.Dispose();
g.Dispose();
bitmapCanvas.Dispose();
return brush;
}
我建議使用'e.Graphics.DpiX/Y;'而不是假設96dpi。除此之外:是的,我們不能指望當使用像素以外的圖形單位時,10像素將始終適合pixelgrid .. – TaW
謝謝您,Dialecticus和TaW。我明白爲什麼我的代碼繪製模糊的線條。我打算讓我的代碼可以應用屏幕和打印。我可能需要更正我的代碼。我已經寫了很多代碼,尤其是刷用戶代碼。這可能是一項艱苦的工作。 我很感謝你的回答。我學到了很多。 – AYi
如果您對答案感到滿意,請考慮考慮[接受](http://stackoverflow.com/help/accepted-answer)它..! - 我發現你從來沒有這樣做過:在答案的選票下面,點擊左上角的(不可見)複選標記,然後單擊它!它變成了綠色,並獲得了作者和你的一點名聲。 – TaW