GDI+画图吧..以窗体背景为画板,可以任意指定坐标画图..然后重写一下on_print方法..

解决方案 »

  1.   

    gid绘图,或者你再放置一个picturebox,用来显示icon
      

  2.   

    可以使用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);
    }
      

  3.   

    1.这根本不是什么ICO图标,你可以是bmp格式,jpg格式都行,就是不能用ICO格式
    2.GDI+画上去也可,动态添加多个picturebox也可
      

  4.   

    对于新手来说GDI+是个神马东西啊很难的样子,我告诉你其实你就掌握一个类的一个方法就够你用了,比你想象的简单的多
      

  5.   

    GDI+光听名字好高大上的样子,你随便搜一下,改一改就行了
    其实就是代码画线,画文字,中学计算机课学QBASIC应该都学过的,大学学的C语言也都学过的