鼠標移動痕跡 C#,Delphi,VB,VB.net四種語言版本(附窗體透明)-思路和源代碼(1)
鼠標移動痕跡 C#,Delphi,VB,VB.net四種語言版本(附窗體透明)-思路和源代碼(2)
這兩篇分別介紹了VB和Delphi版本,那麼現在VB.Net和C#一起說說吧,語言還是很相近的。
VB版下載地址:http://download.csdn.net/detail/u011351840/5753079
VB.net版下載地址:http://download.csdn.net/detail/u011351840/5753069
C#版下載地址:http://download.csdn.net/detail/u011351840/5753061
Delphi版下載地址:http://download.csdn.net/detail/u011351840/5753063
先C#的,直接就加進窗體,這時候需要四個變量,ox和oy代表前一個x和前一個y,用於判斷鼠標是否移動
int[] xv = new int[1024];
int[] yv = new int[1024];
int[] si = new int[1024];
int siz;
int ce;
int ox;
int oy;
初始化就略過了,還是一樣的。
和VB,Delphi不同的是,C#和VB.net都有OnPaint方法來繪製圖形,所以我們在OnPaint方法裏寫繪製的代碼
protected override void OnPaint(PaintEventArgs e){
base.OnPaint(e);
Random ran = new Random();
for (int i = 0; i <= siz; i++) {
if ((xv[i] != -1)) {
Rectangle rec= new Rectangle(xv[i] - si[i] / 2, yv[i] - si[i] / 2, si[i], si[i]);
e.Graphics.DrawEllipse(new Pen(Color.FromArgb(128,225,135,210), 3),rec);
si[i] = si[i] + 1;
if ((si[i] > 20)) {
xv[i] = -1;
yv[i] = -1;
si[i] = 2;
}
}
}
}
C#,VB.net的透明和Delphi是差不多的,我們也需要用Timer監控,用Control.MousePosition來獲得鼠標當前位置
public void Timer1Tick(object sender, EventArgs e){
int nx = Control.MousePosition.X;
int ny = Control.MousePosition.Y;
if (ox != nx & oy != ny) {
xv[ce] = nx;
yv[ce] = ny;
ce = ce + 1;
if ((ce >= siz)) {
ce = 0;
}
ox = nx;
oy = ny;
}
this.Invalidate();
}
這樣就能實現C#語言編寫鼠標移動痕跡,VB.net和C#差不多,語法又和VB差不多,所以就直接貼代碼了。
Public Partial Class MainForm
Dim xv(1024) As Integer
Dim yv(1024) As Integer
Dim si(1024) As Integer
Dim siz As Integer
Dim ce As Integer
Dim ox As Integer
Dim oy As Integer
Public Sub New()
Me.InitializeComponent()
End Sub
Protected Overrides Sub OnPaint(e As PaintEventArgs)
MyBase.OnPaint(e)
'e.Graphics.DrawImage(i,0,0)
Dim ran As New Random()
For i As Integer = 0 To siz
If (xv(i) <> -1) Then
Dim r As Integer =CInt(Math.Truncate(ran.NextDouble() * 255))
Dim g As Integer =CInt(Math.Truncate(ran.NextDouble() * 255))
Dim b As Integer =CInt(Math.Truncate(ran.NextDouble() * 255))
Dim rec As Rectangle = New Rectangle(xv(i) - si(i) \ 2, yv(i) - si(i) \ 2, si(i), si(i))
e.Graphics.DrawEllipse(New Pen(Color.FromArgb(128,r,g,b), 3),rec)
si(i) = si(i) + 1
If (si(i) > 24) Then
xv(i) = -1
yv(i) = -1
si(i) = 2
End If
End If
Next i
End Sub
Sub MainFormLoad(sender As Object, e As EventArgs)
siz = 1024
For i As Integer = 0 To siz
xv(i) = -1
yv(i) = -1
si(i) = 2
Next i
timer1.Enabled=True
timer1.Interval=10
End Sub
Sub MainFormMouseMove(sender As Object, e As MouseEventArgs)
End Sub
Sub Timer1Tick(sender As Object, e As EventArgs)
Dim nx As Integer =Control.MousePosition.X
Dim ny As Integer =Control.MousePosition.Y
If ox<>nx And oy<>ny then
xv(ce) = nx
yv(ce) = ny
ce = ce + 1
If (ce >= siz) Then
ce = 0
End If
ox=nx
oy=ny
End if
Me.Invalidate
End Sub
End Class
鼠標痕跡四種語言的版本至此都介紹過了。
如果有什麼不足之處或者錯誤的地方,歡迎指出。
聯繫QQ:740382997
羣:252367359
同時也希望大家記住翼塵,我們還在努力。
翼塵軟件工作室