如何增大C#绘图中Rectangle内白色圆点的尺寸?
如何增大白色圆点的尺寸?
我尝试了多种方法来增大圆点的尺寸,以下是我的实现代码:
using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.IO; static void Main(string[] args) { //Image image = new Bitmap(1000, 1000, PixelFormat.Format32bppArgb); Bitmap bitmap = new Bitmap(100, 100, System.Drawing.Imaging.PixelFormat.Format32bppPArgb); Graphics graph = Graphics.FromImage(bitmap); Pen pen = new Pen(Brushes.Green); Rectangle rect = new Rectangle(0, 0, 100, 100); graph.DrawRectangle(pen, rect); Brush b = new HatchBrush(HatchStyle.Percent90, Color.Orange, Color.White); // Fill rectangle to screen. graph.FillRectangle(b, rect); bitmap.Save("myImage.png", System.Drawing.Imaging.ImageFormat.Png); }

解决方案
HatchStyle.Percent90是系统内置的固定样式,无法直接调整圆点大小。要自定义圆点尺寸,你可以用以下两种方式实现:
方法1:自定义纹理刷(TextureBrush)
创建一个小型纹理图案,绘制指定大小的白色圆点,再用这个纹理填充目标区域:
using System; using System.Drawing; using System.Drawing.Imaging; static void Main(string[] args) { Bitmap bitmap = new Bitmap(100, 100, PixelFormat.Format32bppPArgb); Graphics graph = Graphics.FromImage(bitmap); // 绘制绿色边框 Pen pen = new Pen(Brushes.Green); Rectangle rect = new Rectangle(0, 0, 100, 100); graph.DrawRectangle(pen, rect); // 自定义纹理:橙色背景+白色圆点 int dotSize = 15; // 调整此值改变圆点大小 int textureUnitSize = 20; // 纹理单元大小,控制圆点间距 Bitmap texture = new Bitmap(textureUnitSize, textureUnitSize); using (Graphics textureGraph = Graphics.FromImage(texture)) { textureGraph.Clear(Color.Orange); textureGraph.FillEllipse(Brushes.White, 0, 0, dotSize, dotSize); } // 使用纹理刷填充矩形 using (TextureBrush brush = new TextureBrush(texture)) { graph.FillRectangle(brush, rect); } bitmap.Save("myImage.png", ImageFormat.Png); }
方法2:手动循环绘制圆点
直接在目标画布上逐个绘制白色圆点,精准控制大小和分布:
using System; using System.Drawing; using System.Drawing.Imaging; static void Main(string[] args) { Bitmap bitmap = new Bitmap(100, 100, PixelFormat.Format32bppPArgb); Graphics graph = Graphics.FromImage(bitmap); // 绘制绿色边框 Pen pen = new Pen(Brushes.Green); Rectangle rect = new Rectangle(0, 0, 100, 100); graph.DrawRectangle(pen, rect); // 填充背景为橙色 graph.Clear(Color.Orange); int dotSize = 15; // 圆点大小 int spacing = 20; // 圆点间距 // 遍历绘制所有圆点 for (int x = 0; x < rect.Width; x += spacing) { for (int y = 0; y < rect.Height; y += spacing) { graph.FillEllipse(Brushes.White, x, y, dotSize, dotSize); } } bitmap.Save("myImage.png", ImageFormat.Png); }
两种方法都可以通过修改dotSize变量直接调整白色圆点的尺寸,spacing变量则可以控制圆点之间的距离,按需修改即可。
内容的提问来源于stack exchange,提问作者user2902919
相关产品推荐
相关产品推荐

