在背景图片上动态添加一个ico图标,要求不刷新背景图,该如何处理
在背景图片上动态添加一个ico图标,要求不刷新背景图
vs2008 + winform窗体程序
我在初始化时导入一张背景图,用picturebox控件
然后在窗体上,根据不同操作在不同位置添加一张小的ico图标,已经添加的图标还能够消失。
要求背景图即map.png不能再出现看的出来的刷新。窗体上看起来只是在背景图上添加了一个小图标,而不是背景图重新在窗体上抖动了一下。就像b/s结构中的ajax局部刷新概念。
谁能实现一下代码??
------解决思路----------------------
GDI+画图吧..以窗体背景为画板,可以任意指定坐标画图..然后重写一下on_print方法..
------解决思路----------------------
gid绘图,或者你再放置一个picturebox,用来显示icon
------解决思路----------------------
可以使用Invalidate(Rectangle)来做局部刷新。
1、要求pbxMap在画完底图后,叠加图标
2、如果键盘上下左右,则移动图标位置
3、用Invalidate来局部刷新,‘局部’为图标新旧位置的超集(旧位置也要更新以便擦除)。
------解决思路----------------------
多放个picturebox不就行了。
------解决思路----------------------
1.这根本不是什么ICO图标,你可以是bmp格式,jpg格式都行,就是不能用ICO格式
2.GDI+画上去也可,动态添加多个picturebox也可
------解决思路----------------------
对于新手来说GDI+是个神马东西啊很难的样子,我告诉你其实你就掌握一个类的一个方法就够你用了,比你想象的简单的多
------解决思路----------------------
GDI+光听名字好高大上的样子,你随便搜一下,改一改就行了
其实就是代码画线,画文字,中学计算机课学QBASIC应该都学过的,大学学的C语言也都学过的
vs2008 + winform窗体程序
我在初始化时导入一张背景图,用picturebox控件
//图片背景初始化
this.pbxMap.Image = System.Drawing.Image.FromFile("..\\..\\images\\map.png");
然后在窗体上,根据不同操作在不同位置添加一张小的ico图标,已经添加的图标还能够消失。
要求背景图即map.png不能再出现看的出来的刷新。窗体上看起来只是在背景图上添加了一个小图标,而不是背景图重新在窗体上抖动了一下。就像b/s结构中的ajax局部刷新概念。
谁能实现一下代码??
------解决思路----------------------
GDI+画图吧..以窗体背景为画板,可以任意指定坐标画图..然后重写一下on_print方法..
------解决思路----------------------
gid绘图,或者你再放置一个picturebox,用来显示icon
------解决思路----------------------
可以使用Invalidate(Rectangle)来做局部刷新。
1、要求pbxMap在画完底图后,叠加图标
2、如果键盘上下左右,则移动图标位置
3、用Invalidate来局部刷新,‘局部’为图标新旧位置的超集(旧位置也要更新以便擦除)。
public Form1()
{
InitializeComponent();
this.pbxMap.Paint += pbxMap_Paint; // 1
this.KeyDown += Form1_KeyDown;
}
void Form1_KeyDown(object sender, KeyEventArgs e)
{
int deltaX = 0, deltaY = 0, step = 5;
switch(e.KeyCode)
{
case Keys.Left: deltaX -= step; break;
case Keys.Right: deltaX += step; break;
case Keys.Up: deltaY -= step; break;
case Keys.Down: deltaY += step; break;
}
if (deltaX != 0
------解决思路----------------------
deltaY != 0)
{
Rectangle oldRect = iconRect;
iconRect.Offset(deltaX, deltaY); // 2
this.pbxMap.Invalidate(Rectangle.Union(oldRect, iconRect)); // 3 局部刷新
}
}
Rectangle iconRect = new Rectangle(new Point(100, 100), SystemIcons.Question.Size);
void pbxMap_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawIconUnstretched(SystemIcons.Question, iconRect);
}
------解决思路----------------------
多放个picturebox不就行了。
------解决思路----------------------
1.这根本不是什么ICO图标,你可以是bmp格式,jpg格式都行,就是不能用ICO格式
2.GDI+画上去也可,动态添加多个picturebox也可
------解决思路----------------------
对于新手来说GDI+是个神马东西啊很难的样子,我告诉你其实你就掌握一个类的一个方法就够你用了,比你想象的简单的多
------解决思路----------------------
GDI+光听名字好高大上的样子,你随便搜一下,改一改就行了
其实就是代码画线,画文字,中学计算机课学QBASIC应该都学过的,大学学的C语言也都学过的