gpt4 book ai didi

c# - WinForms C# - 自由绘制的正确方法?

转载 作者:行者123 更新时间:2023-11-30 15:22:17 26 4
gpt4 key购买 nike

我正在尝试重新创建类似于 Microsoft 的画图应用程序的东西。我正在使用 Bitmap 技术来渲染我的绘图,以便让它们持久存在。在 4 x 4 像素时,它不明显,但随着宽度的增加,它会非常明显,尤其是当您弯曲时。我有一张照片向您展示它的外观和一些片段。

picture

        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() 变量成员。对不起,如果代码有点乱,我不得不粗暴地把它删掉。我正在使用钢笔,尽管它在图片中显示为 Brush。涂鸦是我声明的图形

最佳答案

您应该指定 StartCapEndCap 属性:

pen.StartCap = System.Drawing.Drawing2D.LineCap.Round;
pen.EndCap = System.Drawing.Drawing2D.LineCap.Round;

默认设置为Flat,这会将笔宽较短的线条变成愚蠢的条纹。

关于c# - WinForms C# - 自由绘制的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35931234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com