鼠標移動痕跡 C#,Delphi,VB,VB.net四種語言版本(附窗體透明)-思路和源代碼(3)

鼠標移動痕跡 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

郵箱:[email protected]

同時也希望大家記住翼塵,我們還在努力。

翼塵軟件工作室


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章