หน้าแรก
 การบ้าน
  C/C++ new
  Java new
  Windows Phone
  แจ้งเรื่องที่ต้องการ
 บทความ
  .NET
  Android
  Blackberry
  C++Builder
  Delphi
  Java
  Mobile
  Open Source
  Pocket PC
  Visual Basic
  Web
  Windows Phone
  Others
 แบบเรียนฟรี
  ASP
  ASP.NET Webmatrix
  C++
  eVB
  J2ME
  Java
  PHP
 ซอร์สโค้ด
  Android
  ASP
  C++
  VC++
  CGI-Perl
  Delphi
  Java
  jQuery
  PHP
  Visual Basic
  .NET
 บริการจากเรา
  เปิดท้าย... ขายโค้ด
  Freeware
  อัตราค่าโฆษณา
  รายชื่อลูกค้า
  สถิติผู้เข้าเว็บ
 ดาว์นโหลด
 ค้นหาข้อมูล
 กระดานสนทนา
  .NET
  C/C++
  Delphi
  Java
  Palm/PocketPC
  Visual Basic
  Web
  อื่นๆ
 กระดานงาน
 ลิงค์เว็บ
 เกี่ยวกับผม
 อัตราค่าโฆษณา
Social Network

Facebook  Twitter  YouTube
 New Article
 Webboard
 Freelanceboard
Freeware
โปรแกรมเบอร์ดี (BerDee)
โปรแกรมเบอร์ดี (Android)
เกมส์เป่ายิ้งฉุบ
เกมส์เป่ายิ้งฉุบ(Android)
WebcamMonitor
WebcamMonitor(Windows)
scSendMail
scSendMail(Windows)
MSN Caption
MSN Caption(Windows)
  Freelance comment
  ติดต่อสอบถามมาได้ตลอดนะ...
2015-07-29 13:35:58
  ถ้าผมต้องการเว็บที่พัฒน...
2015-01-18 15:33:54
  ถ้าผมต้องการเว็บที่พัฒน...
2015-01-18 15:32:51
  ติดต่อสอบถามเข้ามาได้นะ...
2014-01-06 12:47:38
  ถ้ายังหาคนสอนไม่ได้ ก็ลอ...
2013-07-06 01:04:37
  สนใจส่งขอบเขตมาคุยราคาก...
2013-03-24 18:54:20
  ถ้ายังไม่มีคนรับงานติดต...
2012-12-16 19:18:14
  สนใจคะ ติดต่อ 0905076277...
2012-11-12 11:07:46
  รับทำโปรเจ็คนักศึกษาหรื...
2012-10-29 03:10:46
  sukit_te34@hotmail.com...
2012-10-29 03:09:36
  Webboard comment
  เขียนโปรแกรมภาษาจาวา
1.โ...

2023-09-12 11:40:28
  ต้องลอง debug ดูเองครับ
ไล่...

2023-06-08 18:03:06
  ร้านค้าแห่งหนึ่ง จะต้องน...
2021-09-21 08:47:08
  จงเขียนโปรแกรมดำเนินการ...
2021-05-07 15:06:11
  จงเขียนโปรแกรมสำหรับคำน...
2021-03-09 14:21:45
  ขอดู...
2021-01-04 23:56:45
  ขอโค้ดเพื่อทำการเรียนกา...
2020-12-09 23:02:09
  แล้ว ?...
2020-12-09 10:56:34
  จ้า...
2020-10-18 16:53:21
  พอดีผมเหลื่อแค่ตัดสต๊อก...
2020-05-31 21:49:43
  Homework comment
  เขียนโปรแกรมเพื่อรับค่า...
2022-02-24 10:45:17
  จากโค้ดนี้อะครับ พอดีลอง...
2021-03-22 01:22:39
  จากโค้ดนี้อะครับ พอดีลอง...
2021-03-22 01:22:39
  โจทย์การบ้าน c++ เขียนรูปแ...
2020-04-06 11:01:33
  แบบนี้ขอเป็น ภาษา php หน่อย...
2019-09-18 14:36:34
  ผมไม่อยากให้คุณได้คะแนน...
2019-04-27 01:29:07
  อาจารย์เขาบอกแนวข้อสอบม...
2019-04-27 00:44:29
  ขอสอบถามการเขียน c++ ครับ เ...
2018-04-02 12:19:21
  โค้ดตัวอย่างศึกษาให้เข้...
2017-11-26 14:50:05
  คำนวณค่าน้ำโดยรับค่ามิเ...
2017-11-20 23:15:26
  Article comment
  เท่าที่อ่าน error คือพื้นที่...
2022-03-23 13:56:48
  เรียน สอบถามปัญหา กับ อ.คร...
2022-01-24 17:39:49
  ต้องการ ให้เขียน โปรแกรม ...
2019-12-09 11:39:58
  รับเขียน arx จาก vc++ 2017 ล็อคโปร...
2019-09-19 09:48:09
  ทำการ register ไฟล์ที่ชื่อ mswinsck.oc...
2019-09-17 14:05:56
  ใน vb 6 ไม่มี component winsock เลยค่ะ ส...
2019-09-03 10:31:02
  รบกวนขอสอบถามหน่อยนะครั...
2019-03-04 05:31:04
  สามารถนำตัวหนังสือจากภา...
2018-12-25 08:54:32
  มีcode ของ VB ไหมค่ะ ถ้ามีรบกว...
2017-09-28 16:50:02
  น่าจะได้ครับ ไม่เคยลอง
...

2017-07-11 09:59:35
  9Mcode comment

Link Exchange

อัตราค่าโฆษณา
 
Zoom หน้าจอด้วย Delphi (อ่าน 19,386)
ศุภกิจ ทองดี (9'M) บทความโดย: นาย ศุภกิจ ทองดี (9'M)
e-mail: webmaster@sourcecode.in.th
mobile: 09-5009-5351
Line: suppakit.thongdee
Youtube: 9Mcode
Fanpage: Sourcecode.in.th
   
: ดาว์นโหลดตัวอย่างโปรแกรม (ดาว์นโหลด 2,146 ครั้ง)

- - - - - - - - - - - - - - ผู้ให้การสนับสนุน- - - - - - - - - - - - - -

 
 
Freelanceรับพัฒนาโปรแกรม และเว็บ โดย 9'M 

ในตัวอย่างบทความต่อไปนี้ จะนำเสนอถึงโค้ดโปรแกรม ในการดึงภาพจากหน้าจอขึ้นมา ตามตำแหน่งของเมาส์ โดยจะนำภาพที่ได้มาแสดงบนหน้าต่างของโปรแกรม ชุดโปรแกรมที่ผมจะนำมาใช้ ในที่นี้คือ Borland Developer Studion 2006 (ในที่นี้ ผมขอเรียกกว่า BDS) ซึ่งจะเลือกใช้ชุดพัฒนาของ Delphi ดังนั้นโค้ดในตัวอย่างบทความนี้ คุณสามารถนำไปใช้กับ Delphi รุ่น 5,6 หรือ 7 ได้เหมือนกันครับ

สำหรับท่านที่ได้ที่ติดตั้งโปรแกรม BDS อยู่แล้ว ให้ทำการสร้างโปรเจคใหม่ โดยเลือกจาก เมนู File->New->VCL Forms Application - Delphi for Win32 จะปรากฏหน้าต่างของโปรแกรม

ต่อจากนั้นให้ทำการวางคอนโทรลที่อยู่ด้านข้าง 2 อย่างด้วยกันคือ TTimer และ TImage ดังรูป

ออกแบบหน้าต่างโปรแกรม
รูปที่ 1 หน้าต่างการวางคอนโทรล

ในที่นี้ เราจะใช้ Image1 ในการแสดงผล สำหรับ Timer1 นั้นจะเป็นส่วนของการดึงภาพจากหน้าจอ ขึ้นมาแสดงบน Image1

ขั้นตอนต่อมาจะเป็นการใส่โค้ดลงในส่วนของ Timer1 โดยทำการกำหนดคุณสมบัติของ Timer1 โดยมีค่าดังนี้ Enabled=True และ Interval=1000

จากนั้นให้ทำการดับเบิ้ลคลิกบน Timer1 และป้อนโค้ดดังต่อไปนี้

procedure TForm1.Timer1Timer(Sender: TObject);
var
  AppRect, SourceRect: TRect;
  Canvas : TCanvas;
  Point : TPoint;
  Mag : Integer;
begin

  if not IsIconic(Application.Handle) then
  begin
    AppRect := Rect(Self.Left,Self.Top,self.Left+self.Width,self.Top+self.Height );
    GetCursorPos(Point);
    if not PtInRect(AppRect,Point) then
    begin
      Canvas  :=TCanvas.Create;
      Canvas.Handle := GetDC(GetDesktopWindow);
      Mag :=4;
      SourceRect := Rect(Point.X,Point.Y,Point.X,Point.Y);
      InflateRect(SourceRect,Round(Image1.Width/Mag),Round(Image1.Height/Mag));
      Image1.Canvas.CopyRect(Image1.BoundsRect,Canvas,SourceRect);
      Canvas.Free;
      Application.ProcessMessages;
    end;

  end;

end;

จากโค้ดจะเป็นการประกาศตัวแปรแบบ TRect ซึ่งสามารถเก็บค่าที่เป็นตำแหน่งและขนาดของหน้าต่าง, ตัวแปร TCanvas ใช้สำหรับเก็บค่าของพื้นที่ ในส่วนที่สามารถวาดภาพหรือวางรูปภาพลงไปได้

เริ่มต้นจะเป็นการตรวจสอบว่าโปรแกรมไม่ได้อยู่ในโหมดของการย่อหน้าต่าง จากนั้นทำการสร้างตัวแปร AppRect สำหรับเก็บตำแหน่งและขนาดของหน้าต่างโปรแกรมที่ทำงานอยู่ในขณะนั้น ขั้นตอนถัดมาเป็นการ หาตำแหน่งของเคอร์เซอร์ไปเก็บไว้ในตัวแปร Point

ต่อมาจะทำการตรวจสอบว่าตำแหน่งของ เคอร์เซอร์ อยู่ในพื้นที่ของ AppRect หรือไม่ หากไม่อยู่ในพื้นที่ของโปรแกรม จะทำการสร้าง Canvas และใช้วิธีดึงภาพจากหน้าจอขึ้นมา หลังจากนั้นจะทำการตัดภาพที่ดึงมา โดยจะตัดภาพให้มีขนาดเป็นจำนวนเท่า ตามที่กำหนดไว้ใน ตัวแปร Mag มาใส่ไว้ใน คอนโทรล Image1

และสุดท้ายจะเป็นการเรียกใช้ Application.ProcessMessages เพื่อให้มีการตรวจสอบ เหตุการณ์อื่นๆของหน้าต่าง ไม่เช่นนั้นแล้ว หน้าต่างจะค้างนิ่ง ไม่ตอบสนองเหตุการณ์อื่นๆ (ไม่เชื่อก็ลอง เอาออกดูได้ครับ)

สุดท้ายก็แค่กดปุ่ม F9 เพื่อสั่งให้โปรแกรมทำงาน เพียงเท่านี้ คุณจะได้โปรแกรม Zoom หน้าจออย่างง่าย มาใช้งานแล้วครับ

?

ผลการทำงานของโปรแกรม
รูปที่ 2 แสดงหน้าต่าง Run

ทิ้งท้าย
หวังว่าโค้ด เล็กๆน้อยๆ นี้จะเป็นประโยชน์บ้างสำหรับ เพื่อนๆพี่ๆน้อง ทุกท่าน ขอขอบคุณที่ให้ความสนใจ และติดตามเว็บเรา ด้วยดี เสมอมา แล้วพบกันใหม่กับ 9'M

: ดาว์นโหลดตัวอย่างโปรแกรม (ดาว์นโหลด 2,146 ครั้ง)
 

- - - - - - - - - - - - - - ผู้ให้การสนับสนุน- - - - - - - - - - - - - -

สอบถาม
  • ห้ามการโฆษณา หากต้องการติดต่อหาลูกค้า ติดต่อโฆษณาโดยตรงได้ที่ webmaster@sourcecode.in.th
  • ห้ามใช้คำหยาบและคำพูดที่ไม่เหมาะสม
  • ขอสงวนสิทธิหากตรวจพบ ข้อความที่ไม่เหมาะสม ข้อความนั้นจะถูกลบทันที
ชื่อ
อีเมล์
รายละเอียด

 
 
คลิปสอนเขียนโปรแกรม
เรียนเขียนโปรแกรมดอทเน็ต
เรียนเขียนโปรแกรมแอนดรอยด์
เรียนเขียนโปรแกรมเบล็คเบอร์รี่
เรียนเขียนโปรแกรมซี ซีพลัสพลัส
เรียนเขียนโปรแกรมจาวา
เรียนการใช้งานลินุกส์
เรียนการเขียนโปรแกรมวินโดว์โฟน
เรียนการเขียนโปรแกรมพีเฮชพี มายเอสคิวเอล
อัตราค่าโฆษณา
 
บทความที่เกี่ยวข้อง

What?s new in Delphi 2005 #1 ( for ?in loop statement)

Dynamic Cast ใน Delphi

เขียนโปรแกรมให้ Run ตอน Startup Windows

สร้าง LED Control

การเขียน ActiveForm(ActiveX Control) เบื้องต้น

โปรแกรม Post ข้อมูล ไปยังไฟล์ ASP

แสดงหมายเลข IP Address ของเครื่องบน NetWork

การแสดงรายชื่อ Email Contact ของ Microsoft Outlook

การหาตำแหน่งของ Caret ใน Memo

การเขียน Service Application เพื่อใช้งานบน Windows NT/2000/XP
Tutorial
eVB Tutorial
ASP.NET Webmatrix Tutorial
J2ME Tutorial
C++  Tutorial
Java  Tutorial
PHP Tutorial
ASP Tutorial
 
แบบสำรวจ

Home - Article - Tutorial - Sourcecode - Dev Handbook - Search - WebBoard - Links - About Us

สงวนลิขสิทธิ์ ห้ามคัดลอก ทำซ้ำ แก้ไข ดัดแปลง ไม่ว่าในรูปแบบใด โดยไม่ได้รับอนุญาตเป็นลายลักษณ์อักษร
เลขทะเบียนพาณิชย์อิเล็กทรอนิกส์จากกระทรวงพาณิชย์: 7100503002000
Copyright 2001 SourceCode.in.th