搜尋此網誌

2009年4月26日 星期日

Windows Edit Tool v1.6.3
























Windows Edit Tool v1.6.3
1.新增WAN IP取得功能
2.修改L2 Cache還原預設為0
3.新增英文版本
























Windows Edit Tool v1.6.3 中文版載點:
個人空間

SkyDrive

Box

Windows Edit Tool v1.6.3 英文版載點:
個人空間

SkyDrive


Box



P.S 因此工具為使用微軟的Visual C# 2008 開發,使用者如遇到無法執行狀況請不用擔心,原因為電腦無至微軟更新或安裝Framework 2.0以上版本的可轉散發套件,可至微軟更新或免費下載

微軟Framework 2.0免費下載點:
http://www.microsoft.com/downloa ... d-8edd-aab15c5e04f5

Framework 2.0 我的載點:
個人空間

SkyDrive

Box

2009年4月24日 星期五

C# picturebox1上圖片轉為矩陣

假設form上有picturebox1及picturebox2
我想做的事就是將picturebox1上圖片轉存為矩陣
對這矩陣做一些演算法之類的手腳,再將這矩陣轉換為影像顯示在picturebox2上...
雖然人的腦容量很大,但常常會忘了怎麼寫...

我這裡只是將lena存到矩陣再將矩陣轉存為影像顯示在picturebox2上















上圖Process按鈕的寫法為:

private void btnProcess_Click(object sender, EventArgs e)
{
Bitmap p1 = (Bitmap)pictureBox1.Image;
int[,] r = new int[p1.Height, p1.Width];
int[,] g = new int[p1.Height, p1.Width];
int[,] b = new int[p1.Height, p1.Width];

for (int i = 0; i < p1.Height; i++)
{
for (int j = 0; j < p1.Width; j++)
{
r[i, j] = p1.GetPixel(j, i).R;
g[i, j] = p1.GetPixel(j, i).G;
b[i, j] = p1.GetPixel(j, i).B;
}
}

Bitmap p2 = new Bitmap(p1.Height,p1.Width);
for (int i = 0; i < p1.Height; i++)
{
for (int j = 0; j < p1.Width; j++)
{
p2.SetPixel(j,i,Color.FromArgb(r[i,j],g[i,j],b[i,j]));
}
}
pictureBox2.Image = p2;
}

C# picturebox1與picturebox2 影像處理問題

如果說實際上原圖與修改過後的圖要放在同一個form裡做比較,如果拿我之前寫的GetPixel與SetPixel方式下去改,以當下直覺寫法可能會為

private void btnGray_Click(object sender, EventArgs e)
{
try
{
Bitmap bm1 = (Bitmap)pictureBox1.Image;
Bitmap bm2 = bm1;
int w1 = pictureBox1.Image.Width;
int h1 = pictureBox1.Image.Width;
int x;
int y;
for (y = 0; y <= h1 - 1; y++)
{
for (x = 0; x <= w1 - 1; x++)
{
Color c1 = bm1.GetPixel(x, y);
int r1 = c1.R;
int g1 = c1.G;
int b1 = c1.B;
int avg1 = (r1 + g1 + b1) / 3;
bm2.SetPixel(x, y, Color.FromArgb(avg1, avg1, avg1));
}
}
pictureBox2.Image = bm2;
}

catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}


而立即顯示出來的圖可能是沒有問題或是怪怪的...















而當我按下Refresh按鍵時會發現...
















實質上bm2=bm1以為是另外複製一個圖片到picturebox2上,但當我們在做影像處理時在記憶體中是用相同的區塊...

所以可以寫成這樣...

private void btnProcess_Click(object sender, EventArgs e)
{
Bitmap p1 = (Bitmap)pictureBox1.Image;
Bitmap p2 = new Bitmap(p1.Height, p1.Width);
int avg;
for (int i = 0; i < p1.Height; i++)
{
for (int j = 0; j < p1.Width; j++)
{
avg = (p1.GetPixel(i,j).R + p1.GetPixel(i,j).G + p1.GetPixel(i,j).B)/3;
p2.SetPixel(i, j, Color.FromArgb(avg, avg, avg));
}
}
pictureBox2.Image = p2;
}

當我按完Process再按Refresh時,picturebox1還是保持彩色圖片...

2009年4月20日 星期一

Windows Edit Tool v1.6.2
























Windows Edit Tool v1.6.2新增:
1.新增L2 Cache 3M選項
2.新增基本優化、L2 Cache還原系統預設按鈕
3.Windows 自動登入網域bug修正

下載點:
個人空間

SkyDrive

Box



P.S 因此工具為使用微軟的Visual C# 2008 開發,使用者如遇到無法執行狀況請不用擔心,原因為電腦無至微軟更新或安裝Framework 2.0以上版本的可轉散發套件,可至微軟更新或免費下載

微軟Framework 2.0免費下載點:
http://www.microsoft.com/downloa ... d-8edd-aab15c5e04f5

2009年4月14日 星期二

Windows Edit Tool v1.6.1
























修改:
1.只針對小紅傘9.0問題,如果執行Windows Edit Tool v1.6版的小紅傘修改導致小紅傘9.0開機無法啟動的話,請盡速更新使用Windows Edit Tool v1.6.1版裡的小紅傘9.0區修改

2.拿掉擾人的【林侑諴】字樣 = =

至於想要自己手動設定開機歡迎畫面的同學可以參考【周大】的這篇
http://tonychou.blogspot.com/2008/11/avira-antivir-personaledition-classic.html
9.0版小紅傘依樣畫葫蘆,按圖施工周公保佑你成功...



下載點:
個人空間

SkyDrive

Box

P.S 因此工具為使用微軟的Visual C# 2008 開發,使用者如遇到無法執行狀況請不用擔心,原因為電腦無至微軟更新或安裝Framework 2.0以上版本的可轉散發套件,可至微軟更新或免費下載

微軟Framework 2.0免費下載點:
http://www.microsoft.com/downloa ... d-8edd-aab15c5e04f5

擋下小紅傘9.0廣告路徑改變

如果是XP Home版本可以參考http://blog.xuite.net/tseng.jauming/baby/14135842
方法註冊gpedit.msc

再來就是
開始--->執行--->gpedit.msc--->電腦設定--->Windows設定--->安全性設定--->軟體限制原則--->其他原則--->將小紅傘之前版本設定的路徑改為
C:\Program Files\Avira\AntiVir Desktop\avnotify.dll

C:\Program Files\Avira\AntiVir Desktop\avnotify.exe
之前是直接給路徑後來發現系統啟動時小紅傘無法正常開啟

後來解決方式是重安裝小紅傘9.0與【限制路徑】方式是用【瀏覽】一一點選到avnotify.dll跟avnotify.exe
然後限制路徑...我這台電腦是XP Pro已經有擋下
另一台XP Home的也是擋下...用了很久是還沒發現什麼問題...
至於Vista我本身沒有試過...如果限制會導致小紅傘無法啟動,就請放棄這方式...
不知道其他人有沒有更好的方式
不然就得乖乖的給他打廣告了...

2009年4月5日 星期日

C# 連接 MySQL

下載MySQL Connector Net 5.2.5並安裝
加入參考MySql.Data

using MySql.Data.MySqlClient;
//...
//略
//...

//連接按鈕
private void connectBtn_Click(object sender, System.EventArgs e)
{
if (conn != null)
conn.Close();
//連接字串
string connStr = String.Format("server=localhost;user id=root; password=123456; database=addressbook; pooling=false");

try
{
conn = new MySqlConnection( connStr );
conn.Open();
//取得資料表
GetTable();
}
catch (MySqlException ex)
{
MessageBox.Show( "連接失敗:" + ex.Message );
}
}

//取得資料表
private void GetTable()
{
try
{
data = new DataTable();
//顯示好友名單資料表
da = new MySqlDataAdapter("SELECT * FROM friend" , conn);
cb = new MySqlCommandBuilder(da);
da.Fill(data);
//放到DataGrid顯示
dataGrid.DataSource = data;
}
catch (MySqlException ex)
{
MessageBox.Show("資料表顯示異常:" + ex.Message);
}

}

//更新按鈕
private void updateBtn_Click(object sender, System.EventArgs e)
{
DataTable changes = data.GetChanges();
da.Update( changes );
data.AcceptChanges();
}

將addressbook資料庫裡的friend資料表顯示到DataGrid
在DataGrid裡修改完資料可按更新按鈕來更新資料庫裡的資料
參考於MySQL Connector Net 5.2.5裡的Samples

如果有安裝MySQL Connector Net 5.2.5可以到以下路徑找
C:\Program Files\MySQL\MySQL Connector Net 5.2.5\Samples\Table Editor\cs

2009年4月1日 星期三

VB 連結 MySQL資料庫

下載MySQL Connector Net 5.2並安裝
加入參考MySql.Data

Imports MySql.Data.MySqlClient
Public Class Form1
Dim conn As MySqlConnection
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim connStr As String
connStr = String.Format("server=localhost;user id=root; password=123456; database=test; pooling=false")

Try
conn = New MySqlConnection(connStr)
conn.Open()
If conn.State = ConnectionState.Open Then
MessageBox.Show("資料庫連結成功")
End If
Catch ex As MySqlException
MessageBox.Show(ex.Message)
End Try
End Sub
End Class