2012-04-11

GIMP 簡易教學 (1) - 繪圖軟體gimp下載

1-0   接觸 gimp

達仔並非美工、美術科班出身, 談論這方面的常識或許有些吃力 ~
畢竟我只是個外行, 基於自己的興趣與未來可能會應用到繪圖軟體, 因此必須略微涉獵這方面的知識, 藉由 PO 文或許可以讓有興趣的格友們能一同參與學習, 我仍在學習與摸索階段 (自學), 因此在介紹過程中難免疏漏或誤謬, 尚請先進前輩或格友們不吝給予指正 !

說到影像處理軟體 (或繪圖軟體) 大家比較耳熟能詳的大概是下面這幾套吧 ~ Photoshop、CorelDRAW、Corel Painter、Illustrator (illustrator) ... 等等

上述所提到的幾種繪圖軟體, 價格上並不便宜 ... 若是去電腦補習班學習電腦繪圖, 工具加學費算起來也是相當可觀 ! 但是, 學習成效絕對是比自學來得有效率 ! 前提是 ... 你的口袋不能太淺 XD

如果你跟我一樣沒有預算, 又想玩玩繪圖軟體該怎麼辦 ?
首選就是這個了 ~ GIMP ~ 這是一套 "自由軟體" (Free Software)
請注意 !  自由軟體 ≠ 免費軟體 (Freeware)
雖然大部分的自由軟體也是免費的, 但這兩者間卻存在著語意上的矛盾

不過別擔心, 下載這套 GIMP 是不會向你索取任何費用的 ^ __ ^


1-1   下載 gimp

請跟著下面的步驟, 先來下載吧 !
在此不提供自動連結, 請自行複製網址連結並下載 ~
gimp 首頁   www.gimp.org
下載 gimp 請點選首頁的下載按鈕


接著來到下載相關的頁面, 請在此頁面找到下面這一行字
 Download GIMP 2.6.11 - Installer for Windows XP SP2 or later
這裡要下載的是適用於 Windows 作業系統的 gimp , 版本號為 2.6.11
點選後開始下載 ...


我用的是 FireFox 瀏覽器, 所以詢問下載檔案的畫面如上, 按儲存 ...
下載完成後, 直接執行 gimp-2.6.11-i386-setup-1.exe 即可自動完成安裝
安裝過程快慢視電腦硬體的性能而定, 需要花費一點時間 ...
(這裡省略安裝過程)


1-2   啟動 gimp
安裝完成後可以在桌面上看到 gimp 的吉祥物這個捷徑
双擊此捷徑即可開啟 gimp, 成功開啟 gimp 的畫面如下 :
注意到了嗎 ? 有支援繁體中文喔 ! (安裝時會自動轉為你的作業系統語系)


接續 : GIMP 簡易教學 (2) - 工具視窗設定

2012-04-07

簡介物件導向

在軟體的世界中, 雖說是 [ 物件 ], 但實際上並沒有真正的實體存在, 嚴格說來就是由一堆電子信號 ON 與 OFF 交替所構成的複雜網絡而已, [ 物件 ] 之說只是以人類較能接受的形式來稱呼, [ 物件 ] 僅是一種抽象的意涵, 千萬不要太過執著於字面上的意義.

身為軟體開發者, 我只在乎所學的技術是否能協助我完成整個開發工作, 至於物件導向的優劣問題與未來發展就留給專家學者們去論述 ! 我之前也說過了, 物件導向的概念教學隨處都可以搜尋到, 我不想在這裡多加詳述, 僅針對物件導向的概念做一番簡略描述.

在談論本篇主題前, 我假設您對函式的用法已經相當瞭解.
函式的宣告、函式的呼叫、參數 (引數) 的代入、函式的傳回值 ... 等等

先做個簡單測試 :

(修飾詞不同)
private void myFunction0 ( ) { .... }
public void myFunction1( ) { .... }

(傳回值 與 參數 的運用)
public int myFunction2 (int num1, int num2 ) { .... }
public double myFunction3 (double num1, double num2) { .... }

上面的幾個函式如果您無法理解它們的意義, 那麼請您先把 [ 函式 ] 這個課題學好後再來碰觸物件導向的知識會比較好, 因為 [ 函式 ] 一詞在物件導向的 class (類別) 中將會改以 [ 方法 ] 來稱呼.

class (類別) 與 instance (物件) 的關係 : 我用圖來說明



在程式設計階段中, 你可以將 class 當成是一個模板來設計, 透過 new 關鍵字就可以產生與 class 相關的 [ 物件 ]; 在程式執行期間 (Runtime), 實際參與運作的就是這些 [ 物件 ].

我用簡略的程式碼來表示 : (Java)
===============================
class Monster {
    屬性 : (略)
    方法 : (略)
}
.......
Monstre myMonster = new Monster(); // 產生一隻 Monster 物件 myMonster
===============================
這個 class (類別) 的名稱就是 Monster, 而 myMonster 就是 instance (物件).


我們來創造更多與 Monster 相關的物件 ~ 沿用之前的 class Monster { .... }
====================================
// 以 ArrayList<> 方式宣告物件陣列清單
ArrayList<Monster> myMonster = new ArrayList<Monster>();
....
for (int i=0; i<10; i++) {                  // 準備創造10 個
      Monster m = new Monster();   // 先產生單隻的 Monster 物件 m
      myMonster.add(m);                // 將單隻的物件 m 陸續加入陣列清單中
}
====================================

2012-04-06

物件導向在哪裡 ?

[ 物件導向 ] 的設計概念只要網搜一下就能找出一堆, 所以, 我不打算在這裡解釋何謂物件導向, 而且我也不擅長論述這方面的知識, 如果你已經讀過許多有關物件導向這方面的書籍或網路常識, 最後你得問你自己一個問題 ~ 我到底會不會用 ?

站在程式設計者的立場, 不管你懂不懂或是要不要運用 [ 物件導向 ] 的概念來設計程式, 目前來說 ~ 恐怕都由不得你了 !

觀察目前的各種程式語言版本, 當你開啟編輯器進入程式編輯畫面時, 畫面上只要出現 class 的字樣, 就表示你已經身在物件導向的懷抱中了 ! 下面我舉幾個例子給你看 : ( 藍色字樣為個別的程式語言編輯器, 請注意裡面的 class 字樣 )

( Android Java & Eclipse )
public class Hello extends Activity {
    @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        .......... (略)


( Microsoft Visual C# )
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        ........ (略)



( 其他 C++ 或 JAVA 版本 )
 public class myfirst {
    public static void main(String[] args) {
       ..... (略)


( Microsoft Visual Basic )
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
........... (略)



有沒有發現到處都有 class 的蹤影 ? 而 class (類別) 就是物件導向的基礎 !
我想告訴您的是 ~ 物件導向的設計概念已經無所不在, 只要您是學習軟體設計 (程式設計) 的人都一定會接觸到這個議題. 下次我再用一些實際的範例來談談.

2012-04-05

Android EditText 元件的資料轉換問題

Android 的 EditText 元件允許使用者輸入資料, 但是不管輸入的資料是數字還是其他字元, 在程式運作中都會將輸入的資料一律視為字串 (或字元), 若要將輸入的資料進行數學運算時, 必須先做型態轉換, 起初在型態轉換方面讓我吃了不少苦頭 ~ 特別在這裡作個筆記與大家分享, 順便也提醒自己.

下面我用畫面並配合程式來說明 :

下圖中, 我配置了兩個 EditText 與 一個 [開始] 按鈕, "+" 與 "=" 兩個符號都是 TextView, 包括顯示相加後的答案欄也是 TextView 元件. 而兩個 EditText 元件的 numeric 屬性皆設定為 integer, 讓它只能接受數字的輸入, 按下 [開始] 鈕後, 我們希望得到兩數相加後的答案 .


直接來看核心程式的部份: (紅色字體部份)

public class StrAndInt extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        final EditText editText1 = (EditText)findViewById(R.id.editText1);
        final EditText editText2 = (EditText)findViewById(R.id.editText2);
        final Button button1 = (Button)findViewById(R.id.button1);
        final TextView textView2 = (TextView)findViewById(R.id.textView2);
       
        button1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                textView2.setText(
                        editText1.getText().toString() +
                        editText2.getText().toString()
                );
            }
        });
    }
}

上面紅色部份的程式說明 :
我將兩個 EditText 的內容進行相加, 運算的結果再呈現到 textView2 中. 下圖中 23 + 12 竟然不是 35 ? 因為資料被當成字串來處理的緣故, 所以23 + 12 = 2312, 但 ~這不是我們要的結果 !

不對! 這結果不是我們要的 ~
把原先的核心程式碼註解掉或刪除掉, 改成如下 :

                int a = Integer.parseInt(editText1.getText().toString());
                int b = Integer.parseInt(editText2.getText().toString());

                textView2.setText(a+b);

這次設定了兩個 int 變數 a、b 來存放兩個經過數值轉換的 EditText 內容, 接著在 textView2 的 setText() 中直接帶入 a + b .... 看看能否成功 ~

這次出了個大錯誤 ! (如下圖) 帶入 textView2.setText() 的資料必須是 String 型態的資料, 數值型態是無法接受的 ~ 更不用說要在裡面進行兩數相加了 ! 

錯誤警告! 錯誤原因並不會在此呈現出來

再接再厲 ! 再把核心碼改成如下 :

                int a = Integer.parseInt(editText1.getText().toString());
                int b = Integer.parseInt(editText2.getText().toString());
              
                textView2.setText(String.valueOf(a+b));
 
 54 + 13 = 67   終於對了 ! 把兩個輸入的資料轉換成數值型態後, 運算完的結果 (a + b) 還必須再轉換成 String 型態, 才能符合 textView2.setText() 的需求. 轉換來轉換去真是有些累人 ~

終於對了 !
結論 :
數值與字串 (String) 型態互相轉換, 要多活用這兩個內建函式 :

( 輸入 int 傳回 String ) :   String.valueOf( int )
( 輸入 String 傳回 int ) :   Integer.parseInt( String )

2012-04-01

開發 Android App 使用哪種程式語言 ?

如果您想從事 Android App 的開發, 那麼您最好具備 JAVA 程式語言基礎, 假如您對程式設計完全不懂的話, 建議您可以先從 JAVA 的基礎開始學起 !

至今為止, 電腦程式語言的種類較為人熟知的大概就以下幾種 :
C 、C ++、Basic、JAVA .... 甚至從一個語言類別中又衍生出各種不同的型態, 例如 : Turbo C、Quick Basic、Visual C++、Visual Basic .... 為數相當多 !

對初學者而言, 應該先從哪種程式語言開始入門, 各方說法大概都莫衷一是, 我個人是覺得多學一點倒是沒有什麼壞處, 雖然每種程式語言在語法上的 [ 用詞 ] 都存在著差異, 但是在整個邏輯架構上並沒有什麼不同, 真正的問題則在於實際應用的層面上, 您必須去了解, 目前所學的這種程式語言到底可以應用在哪方面 ? 除了選用哪種程式語言做為你的工具外, 還要注意你開發完成的東西可以適用在哪個 [ 作業系統 ] 的平台上喔 !

回到主題, 學會 JAVA 程式語言對你在 Android App 的開發上會有極大的助益, 但並不表示這樣就能得心應手喔 ! 因為 Android 還有一些制式的語法需要多瞭解與熟練, 包括一些 Android 專屬的函式庫, 用法與引用的方式都要重新去學習才行 !

如果您有心想從事 Android App 的開發, 您可以從 Android Developers 這個網站中看看相關訊息並好好瞭解一番 .

Android Developers 網站的網址如下 :
http://developer.android.com/index.html

有興趣嗎 ? 達仔歡迎您一起加入開發者的行列喔 !

開發 Android App 的 Eclipse 編輯器

搜尋此網誌