PDA

View Full Version : هاشور زدن مستطیل



mah.yar
چهارشنبه 23 دی 1388, 19:21 عصر
با سلام
من با DrawRectangle یه مستطیل رسم میکنم
حالا میخوام اونو هاشور بزنم.
نمیخوام فقط با رنگ پر بشه.

saed2006
پنج شنبه 24 دی 1388, 11:45 صبح
خب یک متد بنویس که موقعیت و اندازه مستطیل رو بگیره و روی اون به تعداد مشخصی خط رسم کنه

SMRAH1
پنج شنبه 24 دی 1388, 13:06 عصر
سلام
در هنگام Fill کردن،کافیه به جای SolidBrush از TextureBrush استفاده کنی.مثلا:
protected override void OnPaint(PaintEventArgs e)
{
int w = this.Width / 4 - 1;
int h = this.Height / 4 - 1;

Bitmap texture = new Bitmap(10, 10);
using (Graphics gtexture = Graphics.FromImage(texture))
{
gtexture.FillRectangle(new SolidBrush(Color.Transparent), 0, 0, 10, 10);
gtexture.DrawLine(new Pen(Color.Black), 0, 0, 10, 10);
}

TextureBrush tBrush = new TextureBrush(texture);

tBrush.WrapMode = System.Drawing.Drawing2D.WrapMode.Tile;
e.Graphics.FillRectangle(tBrush, w * 0 + 1 * 10, h * 0 + 1 * 10, w, h);
e.Graphics.DrawRectangle(new Pen(Color.Black), w * 0 + 1 * 10, h * 0 + 1 * 10, w - 1, h - 1);

tBrush.WrapMode = System.Drawing.Drawing2D.WrapMode.TileFlipX;
e.Graphics.FillRectangle(tBrush, w * 1 + 2 * 10, h * 1 + 2 * 10, w, h);
e.Graphics.DrawRectangle(new Pen(Color.Black), w * 1 + 2 * 10, h * 1 + 2 * 10, w - 1, h - 1);

tBrush.WrapMode = System.Drawing.Drawing2D.WrapMode.TileFlipY;
e.Graphics.FillRectangle(tBrush, w * 0 + 1 * 10, h * 1 + 2 * 10, w, h);
e.Graphics.DrawRectangle(new Pen(Color.Black), w * 0 + 1 * 10, h * 1 + 2 * 10, w - 1, h - 1);

tBrush.WrapMode = System.Drawing.Drawing2D.WrapMode.TileFlipXY;
e.Graphics.FillRectangle(tBrush, w * 1 + 2 * 10, h * 0 + 1 * 10, w, h);
e.Graphics.DrawRectangle(new Pen(Color.Black), w * 1 + 2 * 10, h * 0 + 1 * 10, w - 1, h - 1);
}

موفق باشید