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

标签 c# winforms graphics

我正在尝试重新创建类似于 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/

相关文章:

java - 使用 getImage 加载图像

javascript - 如何更改 JS 库 highcharts 的高度和工具提示宽度?

c# - 将 3 个 GridView 导出到 3 个不同的工作表中

c# - 在 C# 中迭代​​泛型列表时出现性能问题

c# - 更改 DataGridView 的数字列中的数字组分隔符

c# - 使用 telerik 在 radForm 中更改标题栏文本颜色

c# - 尝试将 null 分配给可空 int 会导致 "There is no implicit conversion between ' int' 和 'null'“错误

c# - 来自 C# 代码的 SQL Lead 和 Lag 函数

c# - 调用被被调用者拒绝

Android:使用 drawText() 书写时文本不可见