Hiệu ứng Chữ "rực Lửa" Cho GUI - Autoit - Huỳnh Phúc Huy 's Blog

Trở về
  • Trang chủ
  • Lập trình
    • Autoit
    • Assembly
    • HTML
    • PHP
    • SQL
    • C#
  • Thủ thuật
    • Blogger
    • Internet
    • Phần mềm
    • Windows
  • Công nghệ
  • Tài liệu lập trình
  • Giải trí
  • Liên hệ
Tin tức công nghệ  -  Thủ thuật lập trình

Wednesday, October 2, 2013

Hiệu ứng chữ "rực lửa" cho GUI - Autoit

Toàn màn hìnhIn bài viết Đây là UDF mình thiết kế riêng cho GUI dựa trên thư viện prospeed và UDF Co-Proc xử lý đa luồng tác vụ trong Autoit. Demo đơn giản chương trình tải gói cài đặt và scite cho autoit mà mình đã giới thiệu ở bài đầu tiên, đây là mã nguồn gốc, các bạn cố gắng đọc và áp dụng được để sử dụng (không yêu cầu phải hiểu code mà chỉ cần biết cách sử dụng là đủ) : Mã nguồn : AutoitDownloader.au3
#NoTrayIcon #include <GUIConstants.au3> #include "Prospeed30.au3" #include "CoProc.au3" Global $rThread[1] , $button , $progress ,$check1,$check2 $check1=False $check2=False $hGUI = GUICreate("Autoit Downloader", 501, 401, 192, 125) GUISetBkColor(0x74B824) $button = GUICtrlCreateButton("DOWNLOAD", 156, 312, 170, 50) $progress1 = GUICtrlCreateProgress(68, 206, 348, 20) $Progress2 = GUICtrlCreateProgress(68, 262, 348, 20) $Label1 = GUICtrlCreateLabel("Download SciTE4AutoIt3.exe", 72, 184, 200, 17) GUICtrlSetColor(-1, 0xFFFFFF) $Label2 = GUICtrlCreateLabel("Download autoit-v3-setup.exe", 72, 240, 200, 17) GUICtrlSetColor(-1, 0xFFFFFF) ;heading($frame_width,$frame_height,$text_set_left,$text_height,$text_font) $heading= _CoProc("heading(500,100,'Yagami Raito:80|MultiThreads:80|With progresses:50|Example:120',60,'Algerian')") GUISetState() _CoProcReciver("Recive") While 1 $msg = GUIGetMsg() Select Case $msg = $button GUICtrlSetData($button,'Downloading') GUICtrlSetState($button,$GUI_DISABLE) $iPidSmall = _CoProc("Small") $iPidBig = _CoProc("Big") Case $msg = $GUI_EVENT_CLOSE FreeAllImages() Exitloop Case Else EndSelect WEnd ProcessClose($heading) Exit Func heading($frame_width,$frame_height,$text_set_left,$text_height,$text_font) Local $text_set[10],$text_left[10],$array[10] $array[0]=0 $text_set_left=StringSplit($text_set_left,"|") For $i=1 to $text_set_left[0] $text_set_left_split=StringSplit($text_set_left[$i],":") $text_set[$i]=$text_set_left_split[1] $text_left[$i]=$text_set_left_split[2] Next $hDC = GetHDC() ;get window DC $createbitmap = CreateImage($frame_width,$frame_height) ;create empty bitmap (default = black) PaintImage($hDC,0,0,$frame_width,$frame_height,$createbitmap,0,0,0) ;copy empty bitmap to window CreateBuffer($frame_width,$frame_height) ;create buffer 800x600 for WM_PAINT SetBuffer($createbitmap) ;fill buffer with empty bitmap $load = LoadFileImage("fire.jpg") ;load jpg for text effect $imagedata = CreateImage($frame_width,$frame_height) ;create empty bitmap for text imagedata $maskdata = CreateImage($frame_width,$frame_height) ;create empty bitmap for text maskimage ColorFillImage($maskdata,0,0,$frame_width,$frame_height,0xFFFFFF) ;fill maskimage with white color $w = GetInfosImage($maskdata, 2) ;get bitmap width $h = GetInfosImage($maskdata, 3) ;get bitmap height $size = GetInfosImage($maskdata, 7)+54 ;get bitmap total bytes used in memory (+54 = bitmap header) SetText($maskdata ,$text_set[1],$text_left[1],($frame_height-$text_height)/2,0x000000,0xFFFFFF,$text_height,$frame_width,$text_font) ;set text on maskimage $array[1] = InitFx($imagedata) ;create array from imagedata $array[2] = InitFx($maskdata) ;create array from maskimage Antialiasing(0,0,0,$array[2],-1,0,1) ;antialiasing text on maskimage For $i=2 to $text_set_left[0] $imagedata = CreateImage($frame_width,$frame_height) ;create second empty bitmap for text imagedata $maskdata = CreateImage($frame_width,$frame_height) ;create second empty bitmap for text maskimage ColorFillImage($maskdata,0,0,$frame_width,$frame_height,0xFFFFFF) ;fill maskimage with white color SetText($maskdata,$text_set[$i],$text_left[$i],($frame_height-$text_height)/2,0x000000,0xFFFFFF,$text_height,$frame_width,$text_font) ;set text on maskimage $array[2*$i-1] = InitFx($imagedata) ;create array from imagedata $array[2*$i] = InitFx($maskdata) ;create array from maskimage Antialiasing(0,0,0,$array[2*$i],-1,0,1) ;antialiasing text on maskimage Next While 1 For $r=1 to $text_set_left[0]-1 $copy = CreateImage($frame_width,$frame_height) ;create empty bitmap for effect $png1 = FXToPng(0,$array[2*$r-1],$array[2*$r],$w,$h,$size) ;create png from imagedata and maskimage $png2 = FXToPng(0,$array[2*($r+1)-1],$array[2*($r+1)],$w,$h,$size) ;create png from imagedata and maskimage For $i = 1 to 200 Step 1 PaintImage($copy,0,0,$frame_width,$frame_height,$load,0,$i*2,0) ;copy .jpg to effect bitmap (800x99) MergeChannelPng(0, $png1, $png2, 4) ;merge png1 with png2 PaintPng(0,$copy,0,0,$png1,0) ;paint merged png to effect bitmap PaintImage($Hdc,0,0,$frame_width,$frame_height,$copy,0,0,0) ;copy effect bitmap to window Sleep(30) Next FreeImage($copy) ;free effect bitmap from memory Next ;msgbox(0,"","") $final=$text_set_left[0] $copy = CreateImage($frame_width,$frame_height) ;create empty bitmap for effect $png1 = FXToPng(0,$array[1],$array[2],$w,$h,$size) ;create png from imagedata and maskimage $png2 = FXToPng(0,$array[2*($final)-1],$array[2*($final)],$w,$h,$size) ;create png from imagedata and maskimage For $i = 1 to 200 Step 1 PaintImage($copy,0,0,$frame_width,$frame_height,$load,0,$i*2,0) ;copy .jpg to effect bitmap (800x99) MergeChannelPng(0, $png2, $png1, 4) ;merge png2 with png1 (reverse merge) PaintPng(0,$copy,0,0,$png2,0) ;paint merged png to effect bitmap PaintImage($Hdc,0,0,$frame_width,$frame_height,$copy,0,0,0) ;copy effect bitmap to window Sleep(30) Next FreeImage($copy) ;free effect bitmap from memory WEnd Endfunc ;~ Func _exit() ;free all bitmaps from memory ;~ FreeFx($array1) ;free array's from momory ;~ FreeFx($array2) ;free array's from momory ;~ FreeFx($array3) ;free array's from momory ;~ FreeFx($array4) ;free array's from momory ;~ FreePng(0,$png1) ;free png1 from momory ;~ FreePng(0,$png2) ;free png2 from momory ;~ Exit ;~ EndFunc #region Process 'Small file' Func Small() $url = "http://www.autoitscript.com/cgi-bin/getfile.pl?../autoit3/scite/download/SciTE4AutoIt3.exe" $size = InetGetSize($url) $hDownload=InetGet($url,@ScriptDir & "\SciTE4AutoIt3.exe",1,1) While InetGetInfo($hDownload, 2) = 0 And ProcessExists($gi_CoProcParent) _CoProcSend($gi_CoProcParent,"small|" &Round(InetGetInfo($hDownload,0) / $size * 100,0)) Sleep(250) WEnd _CoProcSend($gi_CoProcParent,"small|100") EndFunc #endregion #region Process 'Big file' Func Big() $url = "http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe" $size = InetGetSize($url) $hDownload=InetGet($url,@ScriptDir & "\autoit-v3-setup.exe",1,1) While InetGetInfo($hDownload, 2) = 0 And ProcessExists($gi_CoProcParent) _CoProcSend($gi_CoProcParent,"big|" &Round(InetGetInfo($hDownload,0) / $size * 100,0)) Sleep(250) WEnd _CoProcSend($gi_CoProcParent,"big|100") EndFunc #endregion Func Recive($vParameter) $aParam = StringSplit($vParameter,"|") If $aParam[1] = "small" Then GUICtrlSetData($Progress1,$aParam[2]) GUICtrlSetData($label1,'Downloading SciTE4AutoIt3.exe: '&$aParam[2]&'%') Endif If $aParam[1] = "big" Then GUICtrlSetData($Progress2,$aParam[2]) GUICtrlSetData($label2,'Downloading autoit-v3-setup.exe : '&$aParam[2]&'%') Endif If GUICtrlRead($Progress1)=100 and GUICtrlRead($Progress2)=100 then GUICtrlSetData($button,'Redownload') GUICtrlSetState($button,$GUI_ENABLE) Endif EndFunc
UDF Coproc.au3 UDF Prospeed30.au3 Image :

Tìm kiếm trên Blog

Bài viết được xem nhiều nhất

  • Hướng dẫn tùy chỉnh MPC-HC (Media Player Classic) - Phần mềm xem phim tốt nhất hiện nay
  • Thao tác với chuột trong Autoit
  • Thao tác với phím trong Autoit
  • Giao diện người dùng - Autoit GUI (Phần 1)
  • Lập trình hệ thống (một số code mẫu Assembly) - Phần 1

Lưu trữ Blog

  • ▼  2013 (106)
    • ▼  October (33)
      • C# căn bản - Mảng (Arrays)
      • C# căn bản - Toán tử (Operators)
      • Hướng dẫn tạo Splash Image (Khung giới thiệu phần ...
      • Hướng dẫn tạo trang chỉ mục (sitemap) dạng tab cho...
      • Blogger hay Wordpress - CMS nào là tốt nhất ?
      • C# căn bản - Câu lệnh điều kiện
      • C# căn bản - Biến, hằng và các kiểu dữ liệu
      • Giới thiệu ngôn ngữ lập trình C# - Viết chương trì...
      • Tổng quan về lập trình hướng đối tượng (Oriented O...
      • Bảo vệ, che giấu, phòng chống dịch ngược mã nguồn ...
      • Top 10 chất độc hàng đầu thế giới
      • Cách cài Windows 8 chạy song song với Windows 7 tr...
      • SQL nâng cao - Phần 6: Câu lệnh ALTER (Phần cuối)
      • SQL nâng cao - Phần 5: Tạo CSDL và bảng với CREATE
      • SQL nâng cao - Phần 4: Câu lệnh JOIN
      • SQL nâng cao - Phần 3: Bí danh
      • SQL nâng cao - Phần 2: GROUP BY và HAVING
      • SQL nâng cao - Phần 1: Hàm
      • SQL căn bản - Phần 11: Hàm COUNT (Phần cuối)
      • SQL căn bản - Phần 10: Câu lệnh DELETE
      • SQL căn bản - Phần 9: Câu lệnh UPDATE
      • SQL căn bản - Phần 8: Câu lệnh INSERT INTO
      • SQL căn bản - Phần 7: Từ khoá ORDER BY
      • SQL căn bản - Phần 6: Từ khoá DISTINCT
      • SQL căn bản - Phần 5: Toán tử BETWEEN...AND
      • SQL căn bản - Phần 4: Toán tử logic AND và OR
      • SQL căn bản - Phần 3: Mệnh đề WHERE
      • SQL căn bản - Phần 2: Câu lệnh SELECT
      • SQL căn bản - Phần 1: Giới thiệu về SQL
      • Hiệu ứng chữ "rực lửa" cho GUI - Autoit
      • Internet đã hủy hoại chúng ta như thế nào ?
      • Những đặc trưng cơ bản của lập trình hướng đối tượng
      • Sơ lược về lập trình hướng đối tượng

Labels

Lập trình HTML Newbie Autoit Nâng cao Căn bản Thủ thuật SQL Auto C# Mã nguồn Hướng đối tượng OOP Sưu tầm Phần mềm Blogger Giải trí Giao diện Windows Lượm lặt CSS GUI Hướng dẫn WinAPI Cuộc sống Hệ thống Windows 8 Funny .NET Assembly Bảo vệ C++ Hiệu suất Hiệu ứng Internet Trình duyệt Tăng tốc Windows 7 Biểu đồ CMS Chăm sóc máy tính Công nghệ Decompiler Dịch ngược External Device GDI+ GIF Gmail Graph Hook Hệ quản trị mã nguồn Javascipt Manga Media Player Classic Mouse Obfuscator Packer Programing Language Realtime Registry Tiện ích UDF Video Webcam Wordpress driver Âm nhạc Huỳnh Phúc Huy 's Followers ⇝ Liên hệ với mình qua facebook ⇜

Từ khóa » đa Luồng Autoit