使用GDI+从数据库中读取数据进行绘图遇到若干问题,求教!!急!!

llpdev 2003-10-20 11:14:43
我从数据库中读取一组数据,然后在窗口上绘制若干个矩形,并在矩形内填充颜色并写上响应的文字,我要在鼠标单击其中一个矩形时该点中的矩形的填充色就改变。

在实现上述功能我遇到以下问题:

1、当窗口最小化再恢复时,所画的图形没了(我知道一般做法是在onpaint里写代码,但我为了实现上诉功能我想有没有其他方法)
2、当我改变填充色时,该点中的矩形中的文字就没了

改变填充色,我使用一下代码实现:
private void Panel_Click(object sender, System.EventArgs e)
{
Point p = this.PointToClient(Cursor.Position);
if(this._activeIndex == -1)
this.getActiveIndexAtPoint(p);
if(this._activeIndex > -1 && this.RegionClick != null)
{
this._graphics.DrawPath(Pens.BurlyWood,this._Temppath);
this.RegionClick(this._activeIndex, this._pathsArray[this._activeIndex].ToString());
}
}
////////////////////////////////////////////////////////
private int getActiveIndexAtPoint(Point point)
{
System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath();
System.Drawing.Drawing2D.GraphicsPathIterator iterator = new System.Drawing.Drawing2D.GraphicsPathIterator(_pathData);
iterator.Rewind();
for(int current=0; current < iterator.SubpathCount; current++)
{
iterator.NextMarker(path);
if(path.IsVisible(point, this._graphics))
{
_Temppath = path;
//this._graphics.DrawPath(Pens.Blue,path);
return current;
}

}
return -1;
}
...全文
44 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
chmj718 2003-10-21
  • 打赏
  • 举报
回复
up
wideroad 2003-10-20
  • 打赏
  • 举报
回复
其实你完全可以把绘制图形的代码只放在onpaint事件中,当你需要绘制代码时,可以调用onpaint事件。
wideroad 2003-10-20
  • 打赏
  • 举报
回复
第一个问题:
你可以把从数据库中读出数据并根据这些产生矩形框和文字的功能写在一个方法中比如说draw(),把这个函数放在onpaint事件中和你想让这个函数发生的事件中,把让填充色变色的放在单击事件中。

第二个问题:当矩形框的填充颜色改变之后,在矩形框中的文字就被覆盖了,当然看不见了。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧