C#.Net PDF convert to Image

開始之前,需要安裝 Adobe Reader X Pro 以上的版本,安裝完成後去資料夾底下搜尋『Acrobat.dll

開啟Visual Studio專案,並將『Acrobat.dll』加入參考

接著加入『Microsoft.VisualBasic

將以下程式碼貼上去就可以使用了,註解都幫各位寫好了,想知道原理看參考文獻或是註解文字即可

繼續閱讀 “C#.Net PDF convert to Image”

程式設計條件判斷之章,switch…case。

switch…case這個條件判斷的用法,就如同他的名字一樣的直覺。

switch,中文有切換的意思,而case則有案例的意思。它的運作原理跟 if 非常相似,不過在程式中,閱讀起來有時比if來得簡單也更容易懂,尤其當判斷的結果需要很多種變化時,switch…case就是個不錯用的流程控制語法。

這是一個簡單的switch…case例子: switch case

(來源:Cherng)

不對,這個才是:

繼續閱讀 “程式設計條件判斷之章,switch…case。”

Wii Remote Projects 用Wii的搖桿玩出不一樣的世界 1/2。

Wii Remote Projects is one of Johnny Chung Lee’s projects. 我是有一次在網路上逛到的,雖然這東西有點久,不過對我來說還是挺新鮮的一件事情。 那些影片以及他在TED上的演講都讓我印象深刻,邊看邊驚呼的我,當下決定一定要買一支Wii搖桿回來玩以及測試。 就在一個多星期以前,我入手了這支夢寐以求的Wii搖桿。

挑的是黑色款,因為我還滿喜歡那個鋼琴烤漆的質感,哈!

一支799,不算貴。

Wiimote如何運作?

Wiimote即Wii Remote,也就是那隻搖桿(遙控器)。它的運作原理很有趣,它是利用Bluetooth v1.2與Wii主機連結並且傳送與處理資訊。 內部有一個三軸加速度感測器,前端有一個高靈敏的紅外線攝影機。

它就是利用這個和內部的加速度感應器去知道玩家的位置以及姿勢等等,然後再將這些訊息傳給主機,這時的主機會根據遊戲程式來處理這些資訊。 如果想要知道更多詳細資訊可以參考英文版的Wiki,裡面的資料非常詳盡,包括第三方應用等等的。

如何與電腦連接?

剛剛提到,Wii Remote是透過Bluetooth與Wii主機連線,換句話說,只要我們的電腦有藍芽的接收器,我們就能接收到Wii Remote的資訊,所以想要嘗試看看,請準備一個藍芽接收器,如果電腦有內建那就不用準備啦! 準備妥當之後,請同時按下Wii搖桿上的1、2按鍵,這時底下四個LED燈會不斷閃爍,如果沒有閃爍請檢查你有沒有裝上電池。

然後開啟電腦的藍芽程式,點下加入裝置。

找到Nintendo RVL-CNT-01這個名稱的裝置。

連接的時候不用任何密碼的配對,因為Wii搖桿本身不是設計給電腦使用的,請選擇不需密碼配對的選項,或者是密碼欄留空。

OK!連上。連上電腦後的Wii搖桿4顆LED會不斷閃爍。

怎麼玩? 想要嘗試影片上的功能,請依照想嘗試的功能下載,在這邊我整理給各位:

Wiimote Whiteboard

電子白板的小程式,不支援64位元的系統,使用方式可以參考以下的影片。

Multitouch

這比較麻煩,我目前還沒有成功過,因為我還沒去買紅外線二極體。

老實說,我認為Wiimote若只是拿來做這些應用的話似乎有些太浪費,並且在我測試之後發現會有一些角度問題,雖然這點只要把紅外線LED反過來就可以解決。

但這樣的應用大大的浪費了整支遙控器搭配的按鍵以及內建的許多功能,因此我認為這支搖桿還能做到更多樣的應用,例如說非接觸手勢控制、非接觸手寫辨識、無線電腦控制…等等。 附上執行程式以及原始程式碼,歡迎大家來共同討論這雖然過時但卻有趣的應用吧 =D

—- 撰文記事 —-

這篇文章放了快半年,當我打開草稿發現我自從3月之後就沒有在動過這篇文章時,我深深感到訝異…當然,還有比這篇文章更久的草稿文,哈哈! 是有拍實測影片,但總覺得很爛,又很懶得重拍(眼神死),就一直放到了現在…重點,我還是沒拍 XDD 因為放太久,久到我已經忘記原本是要怎麼規劃這篇文章了,所以,我決定先把這篇文章發表出來,當作第一部分。而第二部分則是實測的部分,這部分我會等新的影片完成之後再放上來。雖然我知道,這個東西在網路上已經有很多人發布,但我總覺得還有更有趣的應用,而腦中那個應用的想法已經完成一部分雛形,測試也OK,只剩下修正了…雖然已經修正半年了… 不管如何,我想先讓大家再認識一次這個有點過時的東西,下次,我會順便發表我的應用 :)

NetBeans 7 : unable to start pty process

不久前,我常用的 NetBeans IDE 出了點狀況,那就是當我用 C/C++ 寫程式的時候會一直跳出 unable to start pty process ,也就是呢,無法執行程式的意思。

嗯? 怎會這樣? 原本我以為是程式的問題,重裝了 NetBeans 也重新裝了 MinGW (GCC Compiler),沒用就是沒用,最後找上了 Google 大神。

不久前,我常用的 NetBeans IDE 出了點狀況,那就是當我用 C/C++ 寫程式的時候會一直跳出 unable to start pty process ,也就是呢,無法執行程式的意思。

嗯? 怎會這樣? 原本我以為是程式的問題,重裝了 NetBeans 也重新裝了 MinGW (GCC Compiler),沒用就是沒用,最後找上了 Google 大神。

這一 Google 下去,結果發現有這問題的不只我一個人,這似乎是一個 Bug,然後我在 Netbeans 的論壇中找到了這個解答,以下我就化成圖文說明幫大家解惑解惑。

請在你的專案(Project)名稱上面按一下右鍵,然後點下屬性(Properties)

出現一個新的視窗之後,請點選左邊的 Run

然後,右方的 Console Type 請改成除了 Internal Terminal 以外的選項

做完以上這幾個步驟,你的 NetBeans 應該就能正常編譯與執行 C 了!歡呼吧!XD

如何於VC#中執行命令提示字元的命令?

最近我寫了兩個很小小小小的工具程式,一個是用來查網路卡實體位置的,另一個則是用來將筆記型電腦轉換成無線網路分享器或基地台的小程式。

寫這兩個小程式目的是想要簡化一些繁瑣的程序,以那個查網路卡實體位置的小程式為例子,其實是因為我住宿使用的宿網需要綁定位置,而學校寫的實在是太複雜…所以我就想說乾脆寫個小程式送給所有有住宿的同學們,不過下載率有點低就是了。

最近我寫了兩個很小小小小的工具程式,一個是用來查網路卡實體位置的,另一個則是用來將筆記型電腦轉換成無線網路分享器或基地台的小程式。

寫這兩個小程式目的是想要簡化一些繁瑣的程序,以那個查網路卡實體位置的小程式為例子,其實是因為我住宿使用的宿網需要綁定位置,而學校寫的實在是太複雜…所以我就想說乾脆寫個小程式送給所有有住宿的同學們,不過下載率有點低就是了。

繼續閱讀 “如何於VC#中執行命令提示字元的命令?”

如何安裝 Oracle Java Developer Kit(JDK) 7 於 Ubuntu?

前一陣子 Oracle 釋出了 Java 7 ,這次釋出的版本並沒有像之前那樣擁有 .bin 格式的安裝檔,只有壓縮檔可以選擇,那這樣要怎麼安裝呢?

請先至官方網站下載幕前最新的 JDK 之後並將檔案解壓縮至你的家目錄下(或其他地方),然後在終端機中輸入…

前一陣子 Oracle 釋出了 Java 7 ,這次釋出的版本並沒有像之前那樣擁有 .bin 格式的安裝檔,只有壓縮檔可以選擇,那這樣要怎麼安裝呢?

請先至官方網站下載目前最新的 JDK 之後並將檔案解壓縮至你的家目錄下(或其他地方),然後在終端機中輸入

在開啟的檔案最底下插入這些

這指令有沒有很熟悉?是了!就是之前安裝 Java 6 的那時用到的那個方法,只是安裝方式有點不大相同。當然,如果你解壓縮到其他位置,那第1行的路徑就要改成那個位置。

輸入完成並儲存之後,請重新登入,然後開啟終端機…我想你應該猜得到接下來要做什麼了,沒錯,就是驗證! 請在終端機中輸入

確認 JDK 的編譯器可以使用,並且版本正確。

再輸入

確認 JRM 是 Oracle 的而不是 OpenJDK。

如果訊息都正確,恭喜你,你的 Java 環境已經建立完成了!如果不行,請回到前頭檢查看看是不是少做了哪個步驟,應該都能解決 =D

程式設計之陣列外傳。

陣列?啥?是列陣吧?要打仗嗎? 喔,不不不,是陣列無誤。這是英文 Array 翻譯而來的結果。不過,說真的,光聽陣列這兩個字其實頗抽象的,因為從字面上很難去了解它到底是什麼樣的東西。 也許我們可以拿戰爭中常用的陣形來作比喻。

其實陣列,說簡單一點就是一排很多空格的櫃子,每一格都有編號,編號從0到你所設定的格數(長度)為止。以剛剛那個程式碼來講,他第一排軍人的編號是0而不是1,第二排的編號則是1..以此類推。….

陣列?啥?是列陣吧?要打仗嗎? 喔,不不不,是陣列無誤。這是英文 Array 翻譯而來的結果。不過,說真的,光聽陣列這兩個字其實頗抽象的,因為從字面上很難去了解它到底是什麼樣的東西。 也許我們可以拿戰爭中常用的陣形來作比喻。

繼續閱讀 “程式設計之陣列外傳。”

關於break、continue之間的關係。

其實講到了條件判斷就該題一下跳出迴圈的這個流程控制方式。這邊先拿簡單的拿break這個最常見的文字來說明,範例先行!這次的程式碼很短,其實是我省略幾個東西,包含縮排以及if的大小括弧,因為if只有一行需要執行的程式碼,因此是可以省略大小括弧的。好的,那麼我想大家都看見關鍵字break了。[…]

關於break、continue之間的關係

其實講到了條件判斷就該題一下跳出迴圈的這個流程控制方式。 斯斯有兩種,迴圈跳出則有三種。

  • 直接跳出用break
  • 想回上一層用continue
  • 全部跳出則是return 這邊先拿簡單的拿break這個最常見的文字來說明,範例先行!

    int day,money=0;
    for(day=0;day<30;day++){
    System.out.println(money); //此為JAVA輸出語法,C語言請改用 printf(“%d”,money);
    if(money>100) break;
    money += 5; //這行等同 money = money + 5;
    }

這次的程式碼很短,其實是我省略幾個東西,包含縮排以及if的大小括弧,因為if只有一行需要執行的程式碼,因此是可以省略大小括弧的。

好的,那麼我想大家都看見關鍵字break了。

Break 在英文中有打破、破壞的意思,藉由這個意思代入程式碼中來理解這一小個英文單字在程式碼中到底扮演了何種的角色。

在這段簡易的範例程式碼中,我利用if設定了一個條件,也就是當money這個變數的數值到達100之後程式碼便會執行 break; 這個單字所代表的意思,是的,你會發現程式數到100後便不會再計數下去了。

continue

接下來是 continue ,這個單字在英文的意思是繼續,不過在程式中的繼續是回到一開始再繼續往下。 簡單的例子:

這個簡單的範例中,若你實際執行的話…

「012346789」某A數著,然後說:「咦? 好像少了5呢!」

是的,這就是 continue 的功用,他不像 break 那樣霸道,直接打壞整個迴圈,而是跳過這次的迴圈再繼續執行。

而若在JAVA中與一個標籤做搭配,此時的功用與C中的 goto 非常類似

這只是個範例,在這範例的執行結果與上一個範例是很類似的,不過continue只能往上不能往下,這點在撰寫程式的時候要特別注意。

本來是想要再寫一個return的,不過return比較像是在回傳某些東西的時候才會運用比較多,而也正因為它是回傳,所以當return放在流程控制中的時候,就會發現它的功用與 break 非常類似,不同點在於,return還具有回傳數值之類的功能

因為這樣,關於return的用法我會放在之後介紹到函數以及物件的時候再談囉。