搞不定的问题,求思路

Tidal_Choidi 2011-03-10 04:39:30
GDI直接在form中绘图,没有使用其他“容器”。

写了两个函数,每一个函数中实现绘制一种坐标系图形。

有两个按钮消息函数,在每一个消息函数中调用其中一个函数,目的是实现两种坐标系图在点击按钮的时候实现切换,并在form的客户区显示。


问题:
1.点击不同的按钮可以实现图形的切换,但是我在form的Paint()函数中没有任何的代码,这就意味着切换之后的图形没有实现重绘。当窗口大小发生变化的时候就会有“盲区”现象,也即不显示图形。

2.如果要想达到既实现了图形的切换,又有图形的重绘,即我切换图形之后窗口大小变化我的图形依然能够正常显示,我试了一下在paint()函数中用
if(button1==按下)
{
绘制一种坐标图形
}
else if(button2==按下)
{
绘制另一种坐标图形
}

这样写了之后,显示效果不是一般的乱。找不到一个合适的方法,请各位指教~,在线等
...全文
181 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tidal_Choidi 2011-03-11
  • 打赏
  • 举报
回复
感谢楼上几位朋友。

问题已经解决了,方法就是声明了两个全局变量来标示按钮状态,

int i;
int j;

void button1_Click()
{
i=1;
绘图函数;
k=0;
}

void button2_Click()
{
k=1;
绘图函数;
i=0;

}

void MainForm_Paint(参数列表)
{
if(i==1)
{
绘图函数1;
}
else if(k==1)
{
绘图函数2;
}
}


思路安排如上,基本上完成符合题目中提到的要求了,再次感谢楼上几位的热心回答。
xingyuebuyu 2011-03-10
  • 打赏
  • 举报
回复
if(button1==按下)
{
e.Graphics.Clear(backgraoudcolor);
绘制一种坐标图形
}
else if(button2==按下)
{
e.Graphics.Clear(backgraoudcolor);

绘制另一种坐标图形
}

切换图形之前先将之前的图形全部用背景色清除掉
Tidal_Choidi 2011-03-10
  • 打赏
  • 举报
回复
我再试一下吧,下班了,有点私事,先闪了。感谢楼上的哥们儿
Kation 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 tidal_choidi 的回复:]
[Quote=引用 5 楼 zip_xg 的回复:]
引用 3 楼 tidal_choidi 的回复:
嗯,坐标系的原点坐标、X轴、Y轴都一样大,在同一个位置。


??
什么意思?
=================================================
就是两个坐标系的原点、X轴、Y轴的长度占的像素点数以及位置都相同。

=============……
[/Quote]
不可能啊,难道你不停的调用Paint?
只要在改变Int的时候,调用重绘就行了
Tidal_Choidi 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zip_xg 的回复:]
引用 3 楼 tidal_choidi 的回复:
嗯,坐标系的原点坐标、X轴、Y轴都一样大,在同一个位置。


??
什么意思?
=================================================
就是两个坐标系的原点、X轴、Y轴的长度占的像素点数以及位置都相同。

====================================================

我用了你说的方法也试了,但是图形在不停的刷新显示而且闪烁
Kation 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tidal_choidi 的回复:]
嗯,坐标系的原点坐标、X轴、Y轴都一样大,在同一个位置。
[/Quote]

??
什么意思?

你应该用一个Int或Bool储存标示
比如0绘制这个
1绘制那个

在Paint事件中再根据Int或Bool重画你的图片
Tidal_Choidi 2011-03-10
  • 打赏
  • 举报
回复
就是一个直角坐标系和一个对数坐标系
Tidal_Choidi 2011-03-10
  • 打赏
  • 举报
回复
嗯,坐标系的原点坐标、X轴、Y轴都一样大,在同一个位置。
Kation 2011-03-10
  • 打赏
  • 举报
回复
你两个坐标图形是一样大的吗?在同一个地方吗?

110,536

社区成员

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

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

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