我正在尝试重新创建类似于Microsoft的Paint应用程序的东西。我正在使用Bitmap技术渲染我的绘图,以使它们具有持久性。 4像素x 4像素,它是不明显的,但随着你的宽度越来越高,它非常明显,特别是当你弯曲时。我有一张图片向您展示它的外观和一些片段。
private void Form1_Load(object sender, EventArgs e)
{
//Initializing Graphics and Bitmap
pnlMain.BackgroundImage = new Bitmap(pnlMain.Width, pnlMain.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
Doodle = Graphics.FromImage(pnlMain.BackgroundImage);
Doodle.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
Doodle.Clear(Color.White);
}
private void pnlMain_MouseDown(object sender, MouseEventArgs e)
{
start = e.Location;
if (cboDrawType.SelectedIndex == 0)
{
Painting = true;
}
private void pnlMain_MouseUp(object sender, MouseEventArgs e)
{
Painting = false;
}
private void pnlMain_MouseMove(object sender, MouseEventArgs e)
{
if (Painting == true && cboDrawType.SelectedIndex == 0)
{
end = e.Location;
Doodle.DrawLine(ChosenPen, start, end);
pnlMain.Refresh();
}
start = end;
}
private void nudSize_ValueChanged(object sender, EventArgs e)
{
ChosenPen.Width = Convert.ToUInt16(nudSize.Value);
}
注意:start和end是新的Point()变量成员。 对不起,如果代码有点乱,我不得不粗暴地删掉它。 我正在使用笔,即使它在画面中说明了。 涂鸦是我声明的图形
答案 0 :(得分:4)
您应指定StartCap
和EndCap
属性:
pen.StartCap = System.Drawing.Drawing2D.LineCap.Round;
pen.EndCap = System.Drawing.Drawing2D.LineCap.Round;
默认值为Flat
,它会将笔宽较宽的短线变成傻条纹。