在一个有背景的FORM中画两条跟随鼠标的十字线要不断的刷新才可以。这样很大的占用了CPU。能不能象在没有背景的FORM中画十字线(即画之前不用刷新)。

解决方案 »

  1.   

    用graphicpath,只需重画十字架的path,不用全部重绘
      

  2.   

    用两个PIC,然后一个宽度设置为1,一个高度设置为1,跟着你鼠标移动不就OK啦
      

  3.   

    用两个PIC....不明白。能贴点代码吗?
      

  4.   

    用graphicpath,只需重画十字架的path,不用全部重绘   能贴点例子吗?
      

  5.   

    我这儿就用到了这种方法,vb代码见
    http://blog.csdn.net/wzuomin/archive/2006/12/13/1441007.aspx
    至于绘制十字形,你就改改代码吧。
      

  6.   

    PictrueBox控件啦,伪装成十字线=。=pictureBox1.Location = pictureBox1.Parent.PointToClient(new Point(Cursor.Position.X, Cursor.Position.Y));
    picX.Top = pictureBox1.Top + pictureBox1.Width / 2;
    picY.Left = pictureBox1.Left + pictureBox1.Height / 2;
      

  7.   

    PictureBox.....抱歉,老是写错=。=
      

  8.   

    Public Class Form2    Dim OldPoint As Point    Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.OptimizedDoubleBuffer Or ControlStyles.UserPaint, True)
        End Sub    Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
            Dim p1, p2, p3, p4 As Point        If OldPoint <> Nothing Then
                p1 = PointToScreen(New Point(OldPoint.X, 0))
                p2 = PointToScreen(New Point(OldPoint.X, Me.ClientSize.Height))
                p3 = PointToScreen(New Point(0, OldPoint.Y))
                p4 = PointToScreen(New Point(Me.ClientSize.Width, OldPoint.Y))            ControlPaint.DrawReversibleLine(p1, p2, Color.Cyan)
                ControlPaint.DrawReversibleLine(p3, p4, Color.Cyan)
            End If        p1 = PointToScreen(New Point(e.X, 0))
            p2 = PointToScreen(New Point(e.X, Me.ClientSize.Height))
            p3 = PointToScreen(New Point(0, e.Y))
            p4 = PointToScreen(New Point(Me.ClientSize.Width, e.Y))        ControlPaint.DrawReversibleLine(p1, p2, Color.Cyan)
            ControlPaint.DrawReversibleLine(p3, p4, Color.Cyan)        OldPoint = New Point(e.X, e.Y)
        End SubEnd Class
      

  9.   

    wzuomin()兄 的这种方法我试了。虽然实现了。但还有两个问题:1。我只能在一个矩形框中画。 2.当我画完第一条时Refresh()一下,那么我第条就消失了,那么我第二条画上去就无法起到异或作用,那么第二条就无法擦除了。
      

  10.   

    光标已经设为十字架了!但我想延出来。。整个Form上的十字线!
      

  11.   

    ControlPaint.DrawReversibleLine这里不能选择线的大小?该如何解决?