Tuesday, June 10, 2008

Visual C# GUI 1

เรามาสร้าง user interface เบื้องต้นกับ Visual C# 2005 กันครับ

วันนี้เราจะสร้างโปรแกรมรับข้อความจากผู้ใช้แล้วแสดงผลอย่างง่ายๆ ดังนี้


เมื่อป้อนข้อความแล้วคลิกปุ่มตกลง จะได้


แต่ถ้าไม่ป้อนข้อความใดแล้วคลิกปุ่มตกลง จะแสดงข้อความเตือน


และสามารถลบข้อความที่กำลังป้อน พร้อมปุ่มจบการทำงาน

เริ่มต้นด้วย
เลือก Windows Application

จากนั้นออกแบบโปรแกรมให้มีลักษณะดังนี้


โดยกำหนดชื่อแต่ละคอนโทรลดังนี้
กล่องข้อความ ชื่อ txtInput
ปุ่มตกลง ชื่อ bttOK
ปุ่มลบ ชื่อ bttClear
ปุ่มจบการทำงาน ชื่อ bttExit

จากนั้นดับเบิลคลิกที่ปุ่ม ตกลง แล้วเพิ่มรหัสโปรแกรมดังนี้
private void bttOK_Click(object sender, EventArgs e)
{
 string stext = txtInput.Text.Trim();
 if (stext.Length != 0)
  MessageBox.Show("คุณป้อนข้อความว่า " + stext, "ข้อความของคุณ", MessageBoxButtons.OK, MessageBoxIcon.Information);
 else
  MessageBox.Show("คุณไม่ได้ป้อนข้อความใดๆ","ผิดพลาด",MessageBoxButtons.OK,MessageBoxIcon.Error);
}


สำหรับปุ่ม ลบ
private void bttClear_Click(object sender, EventArgs e)
{
 txtInput.Clear(); // จะใช้ txtInput.Text = "" ก็ได้
 txtInput.Focus();
}


สำหรับปุ่ม จบการทำงาน
private void bttExit_Click(object sender, EventArgs e)
{
 Application.Exit();
}


จากนั้นทดลองกดเมนู Debug / Start without Debugging เพื่อดูผลลัพธ์
เสร็จแล้วครับ

Monday, June 9, 2008

SWFTOOLS แปลงไฟล์หลากหลายให้เป็นแฟลช

อยากเอาไฟล์ วิดีโอ, เสียง, เอกสาร pdf ขึ้นเว็บแบบแฟลช ทำไงดี

อยากแยกไฟล์ รูป, วิดีโอ, เสียง ออกจากไฟล์แฟลช ทำไงดี

อยากรวมไฟล์แฟลชเข้าด้วยกัน ทำไงดี

ลองใช้ SWFTOOLS ดูสิครับ
http://www.swftools.org

จิ๋วแต่แจ๋ว ฟรี แต่ต้องพิมพ์คำสั่งเอาเองนะ

แล้วเราจะมาลองเล่นกัน

GLE บทนำ: คู่แข่งที่อาจสวยกว่า gnuplot

มีโปรแกรมสร้างกราฟและวาดรูปดีๆมาฝากอีกแล้วครับ

GLE Graphics Layout Engine
http://www.gle-graphics.org/

เป็นโปรแกรมคล้ายๆกับ gnuplot ที่ใช้สร้างกราฟ เหมือนกันคือต้องพิมพ์คำสั่งเพื่อใช้งาน

ข้อดี
  • ฟรีๆๆๆๆ
  • ขนาดเล็ก พกพาได้
  • สร้างกราฟได้หลากหลาย
  • รองรับฟังก์ชันที่สร้างขึ้นเอง
  • สามารถบันทึกผลลัพธ์ได้หลายรูปแบบ
  • มีตัวช่วยตกแต่ง
ข้อด้อย (มั้ง)
  • ผลลัพธ์ปกติจะเป็นไฟล์ eps ต้องใช้ ghostscript แปลงเป็นไฟล์ชนิดอื่น
อย่างไรก็ตาม เราสามารถจัดการกับข้อด้อยนี้ได้ง่ายๆ
เอาไว้มาต่อกันบทต่อไปนะครับ

Sunday, June 8, 2008

Gnuplot ภาคสอง: บันทึกคำสั่ง และ การสร้างกราฟจากไฟล์ข้อมูล

บทความก่อนหน้า
ภาคหนึ่ง แนะนำ gnuplot

จากคราวที่แล้ว เรารู้จักวิธีสร้างกราฟจากสมการง่ายๆแล้ว คราวนี้เราลองมาเรียนรู้คำสั่ง gnuplot เพิ่มเติม

เราทราบแล้วว่าเมื่อจะใช้งาน gnuplot ต้องป้อนคำสั่ง

หากต้องการเรียกคำสั่งเดิมมาใช้งาน สามารถทำได้โดยกดแป้นลูกศรชี้ขี้น

แต่ถ้ามีหลายๆคำสั่งล่ะ

มันก็จะง่ายกว่าถ้าสามารถบันทึกคำสั่งทั้งหมดไว้เป็นไฟล์ แล้วเรียกมาใช้งานได้

ทดลองสร้างไฟล์คำสั่งโดยใช้โปรแกรมพิมพ์ข้อความเช่น notepad แล้วพิมพ์คำสั่ง


จากนั้นเพื่อความง่าย ก็บันทึกไว้ในไดเรกทอรีเดียวกับ gnuplot สมมติบันทึกเป็นชื่อว่า basic.plt

เมื่อต้องการเรียกใช้งานชุดคำสั่งที่บันทึกไว้ ก็เพียงแต่พิมพ์ว่า
load "basic.plt"


และหากต้องการพลอตกราฟจากข้อมูลดิบล่ะ

ก็ต้องมีข้อมูลที่ของค่าพิกัด โดยแต่ละคอลัมน์คือ ค่าของแกน x และ y

สมมติว่า เรามีข้อมูลบันทึกไว้ในชื่อไฟล์ myHeight.dat แสดงส่วนสูงในแต่ละปี ดังนี้

2000 157
2001 160
2002 166
2003 170
2004 175
2005 178

ให้แก้คำสั่งในไฟล์ basic.plt เป็น
plot "myHeight.dat" using 1:2 title 'my height'

ซึ่งหมายความว่า ให้ใช้ข้อมูลในไฟล์ชื่อ myHeight.dat โดยใช้เฉพาะคอลัมน์หนึ่งและสอง แล้วกำหนดชื่อให้ข้อมูลนี้ว่า my height

จากนั้นเรียกใช้คำสั่ง
load "basic.plt"

จะได้ผลลัพธ์เป็น

หากต้องการให้มีเส้นด้วย จะใช้คำสั่ง
plot "myHeight.dat" using 1:2 title 'my height' with linespoints

หรือหากต้องการแค่เส้น
plot "myHeight.dat" using 1:2 title 'my height' with lines

สมมติว่ามีข้อมูลสองชุด แล้วต้องการพลอตในกราฟเดียวกัน เช่น ข้อมูลส่วนสูงของนักเรียนสองคนในแต่ละปี
2000 157 142
2001 160 146
2002 166 150
2003 170 155
2004 175 157
2005 178 157

เราสามารถใช้คำสั่ง
plot "myHeight.dat" using 1:2 title 'Somchai' with linespoints, \
(ขึ้นบรรทัดใหม่ตรงนี้)
"myHeight.dat" using 1:3 title 'Somsri' with linespoints

ก็จะได้ผลลัพธ์ดังรูป

วันนี้ขอพอแค่นี้ก่อนนะครับ
จบตอนสอง

Saturday, June 7, 2008

Gnuplot ภาคหนึ่ง

ถ้าคุณอยากหาซอฟต์แวร์สำหรับสร้างกราฟ ที่....
  • ฟรี
  • ขนาดเล็กกะทัดรัด
  • ไม่ต้องติดตั้ง พกพาไปกับแฟลชไดร์ฟได้
  • สร้างกราฟได้ทั้งสองและสามมิติ
  • บันทึกกราฟได้หลายรูปแบบ jpg, png, latex เป็นต้น
  • ใช้งานได้ในหลายระบบปฏิบัติการ ทั้งวินโดวส์ ยูนิกซ์ ลีนุกซ์ ฯลฯ
ทางเลือกหนึ่งของผม (และอาจจะคุณด้วย) ก็คือ แต่น แต้น..... gnuplot

ดาวน์โหลดได้ที่นี้ครับ http://www.gnuplot.info/

สำหรับวินโดวส์ ให้ดาวน์โหลดไฟล์ชื่อ gp423win32.zip แล้วคลายออกไปไว้ในไดเรกทอรีใดๆ ตามต้องการ

เมื่อต้องการเรียกใช้ ให้เข้าไปในไดเรกทอรี bin เรียกไฟล์ชื่อ wgnuplot.exe จะเห็นหน้าตาแบบนี้


ส่วนที่เคอร์เซอร์กะพริบก็คือรอเราป้อนคำสั่งสำหรับการสร้างกราฟนั่นเอง

ไม่ต้องตกใจครับ การใช้งาน gnuplot เป็นแบบ command-line หรือป้อนคำสั่ง แต่ก็มีเมนูช่วยด้วยพอสมควร

เรามาเริ่มใช้งานคำสั่งง่ายๆกันดูครับ

ลองพิมพ์
plot sin(x)
แล้วกดแป้น enter

จะได้



ง่ายไหมครับ

คราวนี้ลองปิดหน้าต่างกราฟ

จะเห็นว่าช่วงในการแสดงผลถูกกำหนดโดนอัตโนมัติ

ทดลองกำหนดช่วงตามแกน x โดยที่นี้เราต้องการแสดงผลในช่วง [-3.14, 3.14] ก็สามารถเขียนได้ว่า
plot [-3.14:3.14] sin(x)


หรือถ้าหากต้องการใช้คำสั่งเฉพาะในการกำหนดช่วง x ก็ทำได้โดย
set xrange [-3.14:3.14]
plot sin(x)

ในกรณีที่เราพลอตกราฟไปแล้ว และต้องการแก้ไขบางส่วน เราสามารถใช้คำสั่ง replot ช่วยได้ เช่น
set yrange [0,1]
replot

สุดท้าย เรามาลองกำหนดชื่อกราฟ ชื่อแกนกัน
set title "Plot of sin(x)"
set xlabel "Angle"
set ylabel "Unit"
replot

ขอให้สนุกกับ gnuplot เบื้องต้นนะครับ

ภาคสอง บันทึกคำสั่งและการสร้างกราฟจากไฟล์ข้อมูล