C#初学者小问题之六——关于rectangle

时间:2022-09-07 12:01:32
各位大侠,问几个关于rectangle的小问题:
1.如何使rectangle显示边界,最好是用虚线显示
2.现有如下代码:
              Graphics g = this.CreateGraphics();
            Rectangle rec1 = new Rectangle(10, 10, 50, 50);
            Rectangle rec2 = new Rectangle(80, 80, 50, 50);
            g.FillRectangle(new SolidBrush( //某种未知Color), rec1);
  如果要使把rec2用与rec1相同的颜色画出来,应该怎么做?或者说有没有什么办法获取rec1的颜色?
3.仍为上述代码,用new申请的内存是否需要释放?如何释放?

9 个解决方案

#1


3.不必释放。GC会自动处理。

#2


哦~第三题明白了,前两道呢?尤其是第二道,怎么查也没查到,大家帮帮忙啊,谢啦~~~

#3


1.可以先画个矩形,再Fill
2.
Graphics g = this.CreateGraphics(); 
Rectangle rec1 = new Rectangle(10, 10, 50, 50); 
Rectangle rec2 = new Rectangle(80, 80, 50, 50); 
SolidBrush brush = new SolidBrush(//某种未知Color);
g.FillRectangle(brush, rec1); 
g.FillRectangle(brush,rec2);
3.用Dispose()方法释放

#4


1 虚线不是Rectangle定义的 是PEN里的
Pen _Pen = new Pen(Color.Red, 1);
_Pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
_Graphics.DrawRectangle(_Pen, new Rectangle(0, 0, _Control.Width-1, _Control.Height-1));

2 Rectangle不需要释放 _Graphics需要释放

3 你可以获取哪个某种未知COLOR 那你在new SolidBrush 
g.FillRectangle(new SolidBrush(//某种未知Color), rec2); 

#5


看来我没说清楚,哦……其实是这样的:
我在写一个俄罗斯方块的程序,不同的方块有不同的颜色,我把界面分成了若干个正方形(rectangle数组),当消掉一行后需要使这一行的正方形颜色变成上一行的正方形颜色,但是,上一行的正方形的颜色是不同而且是随机的(比如说,从左到右可能是蓝黄黑绿红,也可能是红黄黑绿白),所以不知道应该用什么方法实现那种“从画面中抽出去一行”的效果?

#6


SolidBrush、Pen都有Dispose方法,最好使用后Dispose()之,建议使用结构
using(Pen pen =...)
{
}
using(SolidBrush brush = ...)
{
}

#7


自己顶一下~~~大家帮帮忙啊,先谢谢各位大虾了~~~~~~

#8


你应该把整个工作区都画成格子。然后后台数据记录哪些格子要显示出来。

#9


2
g.FillRectangle(Brushes.White, rec1);
用同一种颜色,或调用创建颜色函数
3 g.Dispose();
http://www.cnblogs.com/tuyile006/archive/2007/09/07/748256.html

#1


3.不必释放。GC会自动处理。

#2


哦~第三题明白了,前两道呢?尤其是第二道,怎么查也没查到,大家帮帮忙啊,谢啦~~~

#3


1.可以先画个矩形,再Fill
2.
Graphics g = this.CreateGraphics(); 
Rectangle rec1 = new Rectangle(10, 10, 50, 50); 
Rectangle rec2 = new Rectangle(80, 80, 50, 50); 
SolidBrush brush = new SolidBrush(//某种未知Color);
g.FillRectangle(brush, rec1); 
g.FillRectangle(brush,rec2);
3.用Dispose()方法释放

#4


1 虚线不是Rectangle定义的 是PEN里的
Pen _Pen = new Pen(Color.Red, 1);
_Pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
_Graphics.DrawRectangle(_Pen, new Rectangle(0, 0, _Control.Width-1, _Control.Height-1));

2 Rectangle不需要释放 _Graphics需要释放

3 你可以获取哪个某种未知COLOR 那你在new SolidBrush 
g.FillRectangle(new SolidBrush(//某种未知Color), rec2); 

#5


看来我没说清楚,哦……其实是这样的:
我在写一个俄罗斯方块的程序,不同的方块有不同的颜色,我把界面分成了若干个正方形(rectangle数组),当消掉一行后需要使这一行的正方形颜色变成上一行的正方形颜色,但是,上一行的正方形的颜色是不同而且是随机的(比如说,从左到右可能是蓝黄黑绿红,也可能是红黄黑绿白),所以不知道应该用什么方法实现那种“从画面中抽出去一行”的效果?

#6


SolidBrush、Pen都有Dispose方法,最好使用后Dispose()之,建议使用结构
using(Pen pen =...)
{
}
using(SolidBrush brush = ...)
{
}

#7


自己顶一下~~~大家帮帮忙啊,先谢谢各位大虾了~~~~~~

#8


你应该把整个工作区都画成格子。然后后台数据记录哪些格子要显示出来。

#9


2
g.FillRectangle(Brushes.White, rec1);
用同一种颜色,或调用创建颜色函数
3 g.Dispose();
http://www.cnblogs.com/tuyile006/archive/2007/09/07/748256.html