Ay, Candela专辑_Ay, CandelaIbrahim Ferrer_在线试听 - 虾米音乐
Loading...
Ay, Candela
唱片公司:
发行时间:
专辑类别:
专辑风格:
, , , , , ,
我的评价:
Ibrahim Ferrer专辑介绍:Ay Candela is the most interesting and compelling kind of compilation recording. Not merely a hastily packaged rehash meant to cash in on a vital artists current reputation: It is, in essence, a history of the singer and his time, his pattern of travel through Cubas street fairs, small-time recording studios, night clubs, and finally to the worlds most prestigious stages a as member of the Buena Vista Social Club. The recordings compiled here were done over various periods in Ibrahim Ferrers career, and include the canonical pillars of his repertoire like the title track, and the wondrously joyful "De Camino a la Verada," which he wrote new versions for. There is also a lovely duet here with Carlos Querol called "Santa Cecilia" that dates back to the beginnings of the 20th century. One of the bonuses of this collection is "Una Fuerza Inmensa," a beautiful solo bolero. For the price this is a fantastic buy. There isnt a stray or mediocre moment in the bunch, and the music virtually crackles with energy, vitality and happiness. These are the root sounds of one of Cubas greatest vocal stylists and offer proof of the depth and breadth of his legacy and contribution.
document.write(tip_tmpl);
setTimeout(function() {
$('#tip_60d').fadeOut();
}, 30000);
Compositor Confundido
使用手机扫码收听专辑
打开虾米音乐APP
点击 扫一扫
扫描二维码
收藏了这张专辑的人们...
Ibrahim Ferrer的其他热门专辑
资料贡献者:
音频贡献者:
关注虾米:调音的技术
我的图书馆
调音的技术
调音的技术
[转]&[转]&[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢【先科AY-先科小音箱、收音机、扩音器等。】价格_厂家_图片 -Hc360慧聪网
您是不是在找:
买家还在看:
商品数量:
广东省&深圳市
手机访问店铺
供应先科AY-先科小音箱、收音机、扩音器等。
卖家承诺72小时发货
相关商品推荐
&102.50/台
&18.00/个
&3.30/个
&6.80/台
&40.00/只
&788.00/块
商家等级:
所在地区:
广东省 深圳市
认证信息:
同参数产品
同参数产品
同参数产品
同参数产品
同参数产品
正在加载中........
慧聪网厂家深圳市先科SAST新世纪科技有限公司为您提供先科AY-先科小音箱、收音机、扩音器等。的详细产品价格、产品图片等产品介绍信息,您可以直接联系厂家获取先科AY-先科小音箱、收音机、扩音器等。的具体资料,联系时请说明是在慧聪网看到的。
热门商品推荐
我的浏览记录
MP4相关资源
MP4相关热门专题
您在慧聪网上采购商品属于商业贸易行为。以上所展示的信息由卖家自行提供,内容的真实性、准确性和合法性由发布卖家负责,请意识到互联网交易中的风险是客观存在的。推荐使用慧付宝资金保障服务,保障您的交易安全!
按字母分类 :
让慧聪网撮合专家为您解决采购难题
您采购的产品:
请输入采购产品
您的手机号码:
请输入手机号码
*采购产品:
请输入采购产品
*采购数量/单位:
请输入采购数量
请选择单位
*采购截止日期:
请输入正确的手机号码
请输入验证码
*短信验证码:
<input id="valid_Code1" maxlength="6" placeholder="请输入验证码" name="VALIDCODE" class="codeInput" onkeyup="this.value=this.value.replace(/\D/g,'')" onkeypress="if(event.keyCode
57) event.returnValue =" type="text">
免费获取验证码
为了安全,请输入验证码,我们将优先处理您的需求!
请输入验证码
发送成功!
慧聪已收到您的需求,我们会尽快通知卖家联系您,同时会派出采购专员1对1为您提供服务,请您耐心等待!
电话:4 &&
联系人:董娟&销售经理
公司名称:深圳市先科SAST新世纪科技有限公司
请输入正确的手机号码
请输入验证码
*短信验证码:
免费获取验证码
为了安全,请输入验证码,我们将优先处理您的需求!
请输入验证码
每一份需求都会在24小时内得到行业多家优质供应商报价。
每一份需求的报价供应商工商信用资质都会经过专业人员检验,交易安全有保障。
免费咨询行业专家
免费咨询行业专家
服务主题:
筛选发货地
验证供应商真伪
提供其他优质供应商
采购数量:
用途描述:
成功加入采购单!
当前采购单共3种货品
成功加入采购单!
当前采购单共3种货品
不能购买自己发布的产品!
选中货品中含失效货品,无法完成下单,可能是:
1.货品库存不足
2.货品已过期,或被卖家删除
3.货品不支持在线交易
卖家暂时不在线,留下联系方式,卖家会主动联系您
*我要采购:
我的姓名:
留言内容:Sign in anonymously
ImageSplitter v1.0.0.7 Update of 26 March 2014 (Multi Images Split allowed)
ImageSplitter v1.0.0.7 Update of 26 March 2014 (Multi Images Split allowed)
March 24, 2014 in
Create an account or sign in to comment
You need to be a member in order to leave a comment
Sign up for a new account in our community. It's easy!
Already have an account? Sign in here.
MapIt is a tile world editor.
MapIt was built around the concept of reversing Dragon Warrior map images.
MapIt can take image input and produce a tile and world array.
MapIt features Unity style dragable labels that adjust property values.
MapParser is a C++ project that scans images for unique tiles.
MapParser is very fast.
Due to hard drive failure, many bugs were restored b/c I had to rewind many years.
Frustrated with the design, I wrote a new version from the ground up.
This New Version:
AutoIt Front-end, command line controls, and s so that I can't lose it again.
You can toggle the C++ MapParser off to see the difference in speeds between the MapParser CPP verse AutoIt function.
Function is named Scan_Tiles() in AutoIt.
You can also chose to download without MapParser.exe.
At the moment Scanning a image resets the arrays, but you can add tiles after scanning.
Images can be added as tiles without scan image at all.
Then configure settings to give your world parameters and manually fill the world data with tile indexes.
Using the settings you can change tile size after a scan.
Example: you wanted to replace a map with different sized tiles.
Changing and replacing tile / world data is easy.
B/c tile world editor.
Hotkeys, I use CTRL+R in image above to signal replace tile action and I use "G" to Get the tile under mouse.
Hotkeys are not saved to disk and thus are set to default between sessions.
I might draw the world to pre-rendered surfaces and use them as multi-layer someday.
I do that in my AutoIt, DragonWarrior Remake but I could spend forever unsure what features are important for this.
The DW_Remake has a method of replacing a tile with a tile on two layers.
So you could replace a tree on the first layer with a grass, and a tree in the second layer.
This is all getting very confusing.
I attempted to write the good code.
If something could be better, please advise.
Fifth release.
For download, videos, and example of cre please visit the MapIt webpage: http://songersoft.com/programming/mapit/mapit_about.phtml
Special thanks: @AdmiralAlkex, @Melba23, @MrCreatoR
Main AutoIt source file: Will not run without other Includes and SDL DLLs.
Last Update: 5/26/ PM EST
REMOVED CODE BLOCK:
I was informed the this page loaded very slowly, one solution so far has been to remove the 2k lines in the code block.
When I recieve more feedback from the User I may reduce image size or remove images.
Next Version
Added: $eSETTING_TILE_LAST_PATH
I have the weekend, I want to write world layers with aBoard surfaces.
lenclstr746
HELLO GUYS
I'm a work on a background see and click bot project
I can complete it if your help me
(using imagesearch , gdi+ and
I would like to know if it's possible to pass an image recognition (captcha) system.
What are the ways to achieve this?
Just the references or links is enough for me by now.
Thanks by now!
Draw Path Points allows you to make line paths for drawing with gdi
You can even load an image and trace the outline
Save and load functionality undo and Don't Forget Rotate!
;Draw Path Points BILGUS 2018
;Includes
#include &File.au3&
#include &GDIPlus.au3&
#include &GUIConstants.au3&
#include &GuiEdit.au3&
#include &GuiListView.au3&
#include &GuiTab.au3&
#include &Misc.au3&
If OnAutoItExitRegister("_Exit") && 0 Then
_GDIPlus_Startup() ;initialize GDI+
ConsoleWrite("GDI+ Started" & @CRLF)
EndIf
Opt("MouseCoordMode", 2) ;Relative coords to the client area of the active window
Opt("PixelCoordMode", 2) ;Relative coords to the client area of the active window
Global $g_iXScale = 8
Global $g_iYScale = $g_iXScale
Global $g_sFileSave = @ScriptDir & "\DrawPath.txt" ;Default
Global $g_bClosePath = False
Global $g_bShowImage = False
Global $g_sImagefile = ""
Global $g_iUndo_Max = 50
Global $g_asUndo_Files[1] = [""]
Global $g_asRedo_Files[1] = [""]
Global $g_aPath_Points[1][2] = [[0, 0]]
Global $g_aPath_Rot_Points
Global $g_hForm1 = GUICreate("Draw Path Points", 615, 437, 192, 124)
Global $g_hSelSquare = GUICtrlCreateLabel("", 0, 0, 0, 0, $SS_BLACKFRAME, $WS_EX_TOPMOST)
GUICtrlSetState(-1, $GUI_HIDE)
;-------------------------------------------------------------------------------
Global Enum $eC1_delete, $eC1_del_all, $eC1_update, $eC1_shift_dn, $eC1_shift_up, _
$eC1_closepath, $eC1_showimg, $eC1_lock, $eC1_undo, $eC1_redo, $aCtl1_LAST
Global $g_ahCtl1[$aCtl1_LAST]
Control_Create_Group1()
;-------------------------------------------------------------------------------
Global Enum $eC2_zin, $eC2_zout, $eC2_dgroup, $eC2_decx, $eC2_incx, $eC2_decy, _
$eC2_incy, $eC2_edit_rot, $eC2_rot, $eC2_ud_rot, $eC2_rev, $eC2_toall, $aCtl2_LAST
Global $g_ahCtl2[$aCtl2_LAST]
Control_Create_Group2()
;-------------------------------------------------------------------------------
Global $g_hBtn_load = GUICtrlCreateButton("Load", 5, 1, 35, 20)
Global $g_hBtn_save = GUICtrlCreateButton("Save", 40, 1, 35, 20)
Global $g_hBtn_arr_disp = GUICtrlCreateButton("Array", 75, 1, 35, 20)
Global $g_hEdit_encoded = GUICtrlCreateEdit("", 115, 2, 50, 18, $ES_READONLY + $ES_AUTOHSCROLL, $WS_EX_STATICEDGE + $WS_EX_TRANSPARENT)
Global $g_hList1 = GUICtrlCreateListView("#|x|y", 5, 24, 161, 201, $LVS_SHOWSELALWAYS Or $LVS_SINGLESEL)
Global $g_hList1_LVN = GUICtrlCreateDummy() ;listview notifications
Global $g_hImage1 = GUICtrlCreatePic("", 200, 16, 400, 400, -1, $WS_EX_LAYERED)
Global $g_hTab1 = GUICtrlCreateTab(1, 225, 20, 500, $TCS_VERTICAL)
GUICtrlCreateTabItem(" ")
GUICtrlSetState(-1, $GUI_SHOW) ; will be display first
GUICtrlCreateTabItem(" ")
GUICtrlCreateTabItem("") ; end tabitem definition
For $i = 0 To UBound($g_ahCtl2) - 1
GUICtrlSetState($g_ahCtl2[$i], $GUI_HIDE)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
List_Update()
List_Index()
GUISetState(@SW_SHOW)
State_Save($g_aPath_Points)
Points_Update($g_aPath_Points)
Global $g_nMsg = 0
While 1
$g_nMsg = GUIGetMsg()
If $g_nMsg & 0 And $g_nMsg && $g_ahCtl2[$eC2_ud_rot] And $g_nMsg && $g_ahCtl2[$eC2_edit_rot] And GUICtrlRead($g_ahCtl2[$eC2_edit_rot]) && 0 Then
;ConsoleWrite("Cancel_Rotate? " & $g_nMsg & @CRLF)
If MsgBox($MB_ICONQUESTION + $MB_OKCANCEL + $MB_DEFBUTTON2, "Save?", "Save Rotated Points?", 10) == $IDOK Then
_GUICtrlEdit_SetText($g_ahCtl2[$eC2_edit_rot], "0")
$g_aPath_Points = $g_aPath_Rot_Points
State_Save($g_aPath_Points)
List_Update(List_Index())
_GUICtrlEdit_SetText($g_ahCtl2[$eC2_edit_rot], "0")
Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage, List_Index()) ;, True)
EndIf
EndIf
Switch $g_nMsg
Case $GUI_EVENT_CLOSE
Case $g_hTab1
Tab1_Select()
Case $g_hSelSquare
;ConsoleWrite("SelSquare" & @CRLF)
SelSquare_Drag()
Case $g_hList1
;ConsoleWrite("List1 " & $g_nMsg & @CRLF)
Local $iIndex = List_Index()
If $iIndex && -1 Then
Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage, $iIndex)
_GUICtrlListView_SetItemSelected($g_hList1, $iIndex, True, True)
EndIf
Case $g_hList1_LVN
Point_Selected($g_aPath_Points, $g_hImage1, List_Index())
Case $g_hList1_LVN
Case $g_hImage1
Image1_Clicked()
Case $g_hBtn_save
Btn_save_Clicked()
Case $g_hBtn_load
Btn_load_Clicked()
Case $g_hBtn_arr_disp
_ArrayDisplay($g_aPath_Points)
;-------------------------------------------------------------------
Case $g_ahCtl1[$eC1_shift_up]
$iIndex = List_Index()
Point_Swap($iIndex, -1)
Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage)
Case $g_ahCtl1[$eC1_shift_dn]
$iIndex = List_Index()
Point_Swap($iIndex, 1)
Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage)
Case $g_ahCtl1[$eC1_del_all]
$g_aPath_Points = 0
Global $g_aPath_Points[1][2] = [[0, 0]]
List_Update()
Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage)
Case $g_ahCtl1[$eC1_delete]
$iIndex = List_Index()
Point_Delete($iIndex)
_GUICtrlListView_ClickItem($g_hList1, $iIndex)
Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage)
Case $g_ahCtl1[$eC1_redo]
$g_aPath_Points = State_Restore($g_aPath_Points, False)
List_Update()
Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage)
Case $g_ahCtl1[$eC1_undo]
$g_aPath_Points = State_Restore($g_aPath_Points, True)
List_Update()
Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage)
Case $g_ahCtl1[$eC1_update]
List_Update(List_Index())
Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage)
Ascii_Points($g_aPath_Points)
_GUICtrlEdit_SetSel($g_hEdit_encoded, 0, -1)
Case $g_ahCtl1[$eC1_closepath]
$g_bClosePath = Control_IsChecked($g_ahCtl1[$eC1_closepath])
List_Update(List_Index())
Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage)
If $g_bClosePath Then
GUICtrlSetState($g_ahCtl2[$eC2_rev], $GUI_DISABLE)
GUICtrlSetState($g_ahCtl2[$eC2_rev], $GUI_ENABLE)
EndIf
Case $g_ahCtl1[$eC1_showimg]
If Not $g_bShowImage Then
$g_sImagefile = FileOpenDialog("Select an image", SplitDir($g_sImagefile), "All Files(*.*)", 0, SplitFileName($g_sImagefile), $g_hForm1)
EndIf
$g_bShowImage = Control_IsChecked($g_ahCtl1[$eC1_showimg])
List_Update(List_Index())
Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage)
;-------------------------------------------------------------------
Case $g_ahCtl2[$eC2_zin]
If Control_IsChecked($g_ahCtl2[$eC2_toall]) Then
Points_Scale(1, 1)
$g_iXScale += 1
$g_iYScale += 1
Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage)
EndIf
_GUICtrlListView_ClickItem($g_hList1, List_Index())
Case $g_ahCtl2[$eC2_zout]
If Control_IsChecked($g_ahCtl2[$eC2_toall]) Then
Points_Scale(-1, -1)
$g_iXScale -= 1
$g_iYScale -= 1
Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage)
EndIf
_GUICtrlListView_ClickItem($g_hList1, List_Index())
Case $g_ahCtl2[$eC2_rev]
$iIndex = List_Index()
$g_aPath_Points = Points_Reverse($g_aPath_Points)
Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage, $iIndex) ;, True)
List_Update($iIndex)
Case $g_ahCtl2[$eC2_edit_rot]
;ConsoleWrite("Rotate" & @CRLF)
$iIndex = List_Index()
Local $iDegrees = GUICtrlRead($g_ahCtl2[$eC2_edit_rot])
$g_aPath_Rot_Points = Points_Rotate($g_aPath_Points, $iDegrees)
Points_Update($g_aPath_Rot_Points, $g_bClosePath, $g_bShowImage, $iIndex) ;, True)
Case $g_ahCtl2[$eC2_incx]
Point_Adjust(1, 0, Control_IsChecked($g_ahCtl2[$eC2_toall]))
Case $g_ahCtl2[$eC2_decx]
Point_Adjust(-1, 0, Control_IsChecked($g_ahCtl2[$eC2_toall]))
Case $g_ahCtl2[$eC2_incy]
Point_Adjust(0, 1, Control_IsChecked($g_ahCtl2[$eC2_toall]))
Case $g_ahCtl2[$eC2_decy]
Point_Adjust(0, -1, Control_IsChecked($g_ahCtl2[$eC2_toall]))
EndSwitch
;----------------------------------------------------------------------------------------------------
Func _Exit()
_GDIPlus_Shutdown()
ConsoleWrite("GDI+ Stopped" & @CRLF)
State_Destroy()
EndF==&_Exit
Func Ascii_Points($aPts)
;encodes points into an ascii string
Local Const $iChrOffset = 33
Local Const $iMaxOffset = 126 - $iChrOffset
If Not IsArray($aPts) Then Return
Local $sAscEnc = StringFormat("%03i%05i", $iChrOffset, UBound($aPts) * 2 + 8)
If _ArrayMin($aPts) &= 0 And (_ArrayMax($aPts) - _ArrayMin($aPts)) &= $iMaxOffset Then
For $i = 0 To UBound($aPts) - 1
$sAscEnc = $sAscEnc & Chr($aPts[$i][0] + $iChrOffset) & Chr($aPts[$i][1] + $iChrOffset)
EndIf
_GUICtrlEdit_SetText($g_hEdit_encoded, $sAscEnc)
EndF==&Ascii_Points
Func Btn_load_Clicked()
ConsoleWrite("Load: " & SplitDir($g_sFileSave) & @CRLF)
$g_sFileSave = FileOpenDialog("Select a save file", SplitDir($g_sFileSave), "All Files(*.*)", 0, SplitFileName($g_sFileSave), $g_hForm1)
_FileReadToArray($g_sFileSave, $g_aPath_Points, 0, ",")
If @error Then
Dim $g_aPath_Points[1][2] = [[0, 0]]
State_Destroy()
State_Save($g_aPath_Points)
EndIf
List_Update()
Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage)
EndF==&Btn_load_Clicked
Func Btn_save_Clicked()
List_Update(List_Index())
$g_sFileSave = FileOpenDialog("Select a save file", SplitDir($g_sFileSave), "All Files(*.*)", 0, SplitFileName($g_sFileSave), $g_hForm1)
_FileWriteFromArray($g_sFileSave, $g_aPath_Points, 0, Default, ",")
EndF==&Btn_save_Clicked
Func Control_Create_Group1()
Local $iX = 30
Local $iY = 225
$g_ahCtl1[$eC1_delete] = GUICtrlCreateButton("Delete", $iX + 0, $iY + 0, 50, 20)
$g_ahCtl1[$eC1_shift_dn] = GUICtrlCreateButton("+", $iX + 70, $iY + 0, 20, 20)
$g_ahCtl1[$eC1_shift_up] = GUICtrlCreateButton("-", $iX + 95, $iY + 0, 20, 20)
$g_ahCtl1[$eC1_del_all] = GUICtrlCreateButton("Delete All", $iX + 0, $iY + 25, 50, 20)
$g_ahCtl1[$eC1_update] = GUICtrlCreateButton("Update", $iX + 70, $iY + 25, 50, 20)
$g_ahCtl1[$eC1_undo] = GUICtrlCreateButton("Undo", $iX + 0, $iY + 50, 50, 20)
$g_ahCtl1[$eC1_redo] = GUICtrlCreateButton("Redo", $iX + 70, $iY + 50, 50, 20)
GUICtrlSetState($g_ahCtl1[$eC1_undo], $GUI_DISABLE)
GUICtrlSetState($g_ahCtl1[$eC1_redo], $GUI_DISABLE)
$g_ahCtl1[$eC1_closepath] = GUICtrlCreateCheckbox("Complete", $iX + 0, $iY + 70, 65, 25)
$g_ahCtl1[$eC1_showimg] = GUICtrlCreateCheckbox("Image", $iX + 0, $iY + 90, 65, 25)
$g_ahCtl1[$eC1_lock] = GUICtrlCreateCheckbox("Locked", $iX + 0, $iY + 110, 65, 25)
EndF==&Control_Create_Group1
Func Control_Create_Group2()
Local $iX = 30
Local $iY = 225
$g_ahCtl2[$eC2_rev] = GUICtrlCreateButton("Reverse", $iX + 0, $iY + 0, 50, 20)
$g_ahCtl2[$eC2_edit_rot] = GUICtrlCreateInput("0", $iX + 0, $iY + 25, 40, 20)
$g_ahCtl2[$eC2_ud_rot] = GUICtrlCreateUpdown(-1)
GUICtrlSetLimit($eC2_ud_rot, 360, -360)
$g_ahCtl2[$eC2_rot] = GUICtrlCreateButton("", $iX + 40, $iY + 25, 10, 20)
$g_ahCtl2[$eC2_dgroup] = GUICtrlCreateGroup("Coords", 5 + $iX + 70, $iY + 0, 55, 70)
$g_ahCtl2[$eC2_decy] = GUICtrlCreateButton("-", 24 + $iX + 70, 16 + $iY + 0, 17, 17)
$g_ahCtl2[$eC2_incy] = GUICtrlCreateButton("+", 24 + $iX + 70, 48 + $iY + 0, 17, 17)
$g_ahCtl2[$eC2_decx] = GUICtrlCreateButton("-", 8 + $iX + 70, 32 + $iY + 0, 17, 17)
$g_ahCtl2[$eC2_incx] = GUICtrlCreateButton("+", 40 + $iX + 70, 32 + $iY + 0, 17, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$g_ahCtl2[$eC2_zout] = GUICtrlCreateButton("Zoom -", $iX + 0, $iY + 75, 50, 20)
$g_ahCtl2[$eC2_zin] = GUICtrlCreateButton("Zoom +", $iX + 75, $iY + 75, 50, 20)
$g_ahCtl2[$eC2_toall] = GUICtrlCreateCheckbox("Apply to all", $iX + 0, $iY + 100, 80, 25)
EndF==&Control_Create_Group2
Func Control_IsChecked($IdCtrl)
Return (BitAND(GUICtrlRead($IdCtrl), $GUI_CHECKED) = $GUI_CHECKED)
EndF==&Control_IsChecked
Func GDI_Draw_ArrayPoints(ByRef $aPts, $hImage, $g_bClosePath, $iX, $iY, $sFileName, $iSelected = -1)
Local $hWnd = GUICtrlGetHandle($hImage)
If UBound($aPts) & 1 Then
Local $aPoints = GDI_Points($aPts, $iX, $iY)
Local $aPoints[1][2] = [[0, 0]]
EndIf
Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hWnd) ;create a graphics object from a window handle
_GDIPlus_GraphicsClear($hGraphics, 0xFFFFFFFF)
If FileExists($sFileName) Then
Local $hBitmap = _GDIPlus_BitmapCreateFromFile($sFileName)
Local Const $iWidth = ScaleX(_GDIPlus_ImageGetWidth($hBitmap))
Local Const $iHeight = ScaleY(_GDIPlus_ImageGetHeight($hBitmap))
Local $hBitmap_Scaled = _GDIPlus_ImageResize($hBitmap, $iWidth, $iHeight) ;resize image
_GDIPlus_BitmapDispose($hBitmap) ;Done with initial bitmap
_GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap_Scaled, 0, 0)
_GDIPlus_BitmapDispose($hBitmap_Scaled)
EndIf
Local $hPen = _GDIPlus_PenCreate(0xFFFF0000, ScaleX(1))
Local $hEndCap = _GDIPlus_ArrowCapCreate(1, 1)
_GDIPlus_PenSetCustomEndCap($hPen, $hEndCap)
If $g_bClosePath Then _GDIPlus_GraphicsDrawPolygon($hGraphics, $aPoints, $hPen)
Local $iX0, $iY0, $iX1, $iY1
For $i = 1 To $aPoints[0][0]
If Not $g_bClosePath And $i & $aPoints[0][0] Then
$iX0 = $aPoints[$i][0]
$iY0 = $aPoints[$i][1]
$iX1 = $aPoints[$i + 1][0]
$iY1 = $aPoints[$i + 1][1]
_GDIPlus_GraphicsDrawLine($hGraphics, $iX0, $iY0, $iX1, $iY1, $hPen)
EndIf
_GDIPlus_ArrowCapDispose($hEndCap)
_GDIPlus_PenDispose($hPen)
_GDIPlus_GraphicsDispose($hGraphics)
Point_Selected($aPts, $hImage, $iSelected)
EndF==&GDI_Draw_ArrayPoints
Func GDI_Line_hPath_From_Points($aPts, $iXorig, $iYorig)
;Returns hpath object be sure to delete it when finished
Local $hPath = _GDIPlus_PathCreate() ;Create new path object
Local $aPoints = GDI_Points($aPts, $iXorig, $iYorig)
Local $iX0, $iY0, $iX1, $iY1
If IsArray($aPoints) Then
For $i = 1 To $aPoints[0][0] - 1
$iX0 = $aPoints[$i][0]
$iY0 = $aPoints[$i][1]
$iX1 = $aPoints[$i + 1][0]
$iY1 = $aPoints[$i + 1][1]
_GDIPlus_PathAddLine($hPath, $iX0, $iY0, $iX1, $iY1)
EndIf
Return $hPath
;_GDIPlus_PathDispose($hPath)
EndF==&GDI_Line_hPath_From_Points
Func GDI_Points($aPts, $iXo, $iYO)
Local $aGDIPts
If IsArray($aPts) And UBound($aPts) & 1 Then
Local $aGDIPts[UBound($aPts) + 1][2]
$aGDIPts[0][0] = UBound($aPts)
For $i = 1 To $aGDIPts[0][0] ;Build points list
$aGDIPts[$i][0] = ScaleX($aPts[$i - 1][0]) + $iXo
$aGDIPts[$i][1] = ScaleY($aPts[$i - 1][1]) + $iYO
Local $aGDIPts[1][2] = [[0, 0]]
EndIf
Return $aGDIPts
EndF==&GDI_Points
Func Image1_Clicked()
If Not Control_IsChecked($g_ahCtl1[$eC1_lock]) Then
Local $aCPos = ControlGetPos(GUICtrlGetHandle($g_hImage1), "", 0)
Local $aPos = MouseGetPos()
If IsArray($aPos) And IsArray($aCPos) Then
Local $iXn = Int(($aPos[0] - $aCPos[0] + ScaleX(1) / 2) / ScaleX(1))
Local $iYn = Int(($aPos[1] - $aCPos[1] + ScaleY(1) / 2) / ScaleY(1))
Point_Add(List_Index(), $iXn, $iYn)
EndIf
Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage)
ToolTip("Locked")
Sleep(500)
ToolTip("")
EndIf
EndF==&Image1_Clicked
Func List_Index()
Static Local $hWndList1 = GUICtrlGetHandle($g_hList1)
Local $iIndex = _GUICtrlListView_GetSelectionMark($hWndList1)
If _GUICtrlListView_GetItemSelected($g_hList1, $iIndex) Then Return $iIndex
Return -1
EndF==&List_Index
Func List_Update($iIndex = -1)
Static $hWnd_List1 = GUICtrlGetHandle($g_hList1)
_GUICtrlListView_BeginUpdate($g_hList1)
_GUICtrlListView_DeleteAllItems($hWnd_List1)
For $i = 0 To UBound($g_aPath_Points) - 1
GUICtrlCreateListViewItem($i & "|" & $g_aPath_Points[$i][0] & "|" & $g_aPath_Points[$i][1], $g_hList1)
If $iIndex & -1 Then
_GUICtrlListView_ClickItem($g_hList1, $iIndex)
_GUICtrlListView_EnsureVisible($g_hList1, $iIndex)
EndIf
_GUICtrlListView_EndUpdate($g_hList1)
EndF==&List_Update
Func Point_Add($iIndex, $iX, $iY)
If $iIndex && -1 Then
_ArrayInsert($g_aPath_Points, $iIndex, $iX & "|" & $iY, 0)
_GUICtrlListView_InsertItem($g_hList1, $iIndex, $iIndex)
_GUICtrlListView_SetItemText($g_hList1, $iIndex, $iX, 1)
_GUICtrlListView_SetItemText($g_hList1, $iIndex, $iY, 2)
_GUICtrlListView_EnsureVisible($g_hList1, $iIndex)
_ArrayAdd($g_aPath_Points, $iX & "|" & $iY, 0)
GUICtrlCreateListViewItem(UBound($g_aPath_Points) - 1 & "|" & $iX & "|" & $iY, $g_hList1)
_GUICtrlListView_EnsureVisible($g_hList1, UBound($g_aPath_Points) - 1)
EndIf
State_Save($g_aPath_Points)
EndF==&Point_Add
Func Point_Adjust($iX, $iY, $bToAll)
If Not $bToAll Then
Local $iIndex = List_Index()
If $iIndex == -1 And IsArray($g_aPath_Points) Then $iIndex = UBound($g_aPath_Points) - 1
If $iIndex == -1 Then Return
$g_aPath_Points[$iIndex][0] += $iX
$g_aPath_Points[$iIndex][1] += $iY
_GUICtrlListView_SetItemText($g_hList1, $iIndex, $g_aPath_Points[$iIndex][0], 1)
_GUICtrlListView_SetItemText($g_hList1, $iIndex, $g_aPath_Points[$iIndex][1], 2)
If $iIndex && UBound($g_aPath_Points) - 1 Then _GUICtrlListView_ClickItem($g_hList1, $iIndex)
For $i = 0 To UBound($g_aPath_Points) - 1
$g_aPath_Points[$i][0] += $iX
$g_aPath_Points[$i][1] += $iY
List_Update(List_Index())
EndIf
State_Save($g_aPath_Points)
Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage)
EndF==&Point_Adjust
Func Point_Delete($iIndex)
If $iIndex && -1 Then
_ArrayDelete($g_aPath_Points, $iIndex)
_GUICtrlListView_DeleteItem($g_hList1, $iIndex)
State_Save($g_aPath_Points)
;List_Update($iIndex)
EndIf
EndF==&Point_Delete
Func Point_Modify($iIndex, $iX, $iY)
If $iIndex && -1 Then
$g_aPath_Points[$iIndex][0] = $iX
$g_aPath_Points[$iIndex][1] = $iY
_GUICtrlListView_SetItemText($g_hList1, $iIndex, $iX, 1)
_GUICtrlListView_SetItemText($g_hList1, $iIndex, $iY, 2)
_GUICtrlListView_EnsureVisible($g_hList1, $iIndex)
State_Save($g_aPath_Points)
EndIf
EndF==&Point_Modify
Func Point_Selected($aPts, $hImage, $iIndex)
If $iIndex & -1 Then
GUICtrlSetState($g_hSelSquare, $GUI_HIDE)
Local $hWnd = GUICtrlGetHandle($hImage)
Local $aPos = ControlGetPos($hWnd, "", 0)
If IsArray($aPos) And IsArray($aPts) Then
_WinAPI_RedrawWindow($hWnd, Default, Default, $RDW_ERASENOW)
Local $iXs = ScaleX($aPts[$iIndex][0]) + $aPos[0] - ScaleX(1) / 2
Local $iYs = ScaleY($aPts[$iIndex][1]) + $aPos[1] - ScaleY(1) / 2
WinMove(GUICtrlGetHandle($g_hSelSquare), "", $iXs, $iYs, ScaleX(1), ScaleY(1))
GUICtrlSetState($g_hSelSquare, $GUI_SHOW)
;ConsoleWrite("Point_Selected" & @CRLF)
ConsoleWriteError("Error: Point_Selected" & @CRLF)
EndIf
EndIf
EndF==&Point_Selected
Func Point_Swap($iIndex1, $iNext)
_GUICtrlListView_BeginUpdate($g_hList1)
Local $iIndex2 = 0
Local $aTmp = 0
If $iIndex1 && -1 Then
$iIndex2 = $iIndex1 + $iNext
If $iIndex2 & UBound($g_aPath_Points) - 1 Then
$iIndex2 = 0
ElseIf $iIndex2 & 0 Then
$iIndex2 = UBound($g_aPath_Points) - 1
EndIf
_ArraySwap($g_aPath_Points, $iIndex1, $iIndex2)
Local $iX1 = _GUICtrlListView_GetItemText($g_hList1, $iIndex1, 2)
Local $iY1 = _GUICtrlListView_GetItemText($g_hList1, $iIndex1, 2)
Local $iX2 = _GUICtrlListView_GetItemText($g_hList1, $iIndex2, 2)
Local $iY2 = _GUICtrlListView_GetItemText($g_hList1, $iIndex2, 2)
_GUICtrlListView_SetItemText($g_hList1, $iIndex1, $iX2, 1)
_GUICtrlListView_SetItemText($g_hList1, $iIndex1, $iY2, 2)
_GUICtrlListView_SetItemText($g_hList1, $iIndex2, $iX1, 1)
_GUICtrlListView_SetItemText($g_hList1, $iIndex2, $iY1, 2)
_GUICtrlListView_ClickItem($g_hList1, $iIndex2)
_GUICtrlListView_EnsureVisible($g_hList1, $iIndex2)
;ConsoleWrite("Array Shift" & @CRLF)
If $iNext & 0 TARRAY SHIFT -- Melba23
Local $iUBound = UBound($g_aPath_Points) ; Get size of array
$aTmp = _ArrayExtract($g_aPath_Points, 0, $iUBound - 2) ; Extract all but last
_ArrayInsert($aTmp, 0, _ArrayExtract($g_aPath_Points, $iUBound - 1, Default)) ; Insert last at top
$g_aPath_Points = $aTmp
$aTmp = _ArrayExtract($g_aPath_Points, 1, Default) ; Extract all but top row
_ArrayAdd($aTmp, _ArrayExtract($g_aPath_Points, 0, 0)) ; Add top row at bottom
$g_aPath_Points = $aTmp
EndIf
List_Update(List_Index())
Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage)
EndIf
State_Save($g_aPath_Points)
_GUICtrlListView_EndUpdate($g_hList1)
EndF==&Point_Swap
Func Points_Reverse($aPts)
Local $hPath = GDI_Line_hPath_From_Points($aPts, 0, 0)
;_GDIPlus_PathFlatten($hPath)
_GDIPlus_PathReverse($hPath)
Local $aPoints = _GDIPlus_PathGetPoints($hPath)
_GDIPlus_PathDispose($hPath)
If IsArray($aPoints) Then
;ConsoleWrite("Flipped_Points" & @CRLF)
Global $aPts_Rev[$aPoints[0][0]][2]
For $i = 1 To $aPoints[0][0]
$aPts_Rev[$i - 1][0] = Int($aPoints[$i][0] / ScaleX(1))
$aPts_Rev[$i - 1][1] = Int($aPoints[$i][1] / ScaleY(1))
Return $aPts_Rev
Return $aPts
EndIf
EndF==&Points_Reverse
Func Points_Rotate($aPts, $iDegrees)
Local $hPath = GDI_Line_hPath_From_Points($aPts, 0, 0)
;_GDIPlus_PathFlatten($hPath)
Local $hPen = _GDIPlus_PenCreate(0x0, ScaleX(1))
Local $aBounds = _GDIPlus_PathGetWorldBounds($hPath, 0, $hPen)
_GDIPlus_PenDispose($hPen)
If IsArray($aBounds) Then
Local $hMatrix = _GDIPlus_MatrixCreate()
_GDIPlus_MatrixTranslate($hMatrix, $aBounds[0] + $aBounds[2] / 2, $aBounds[1] + $aBounds[3] / 2)
_GDIPlus_MatrixRotate($hMatrix, $iDegrees)
_GDIPlus_MatrixTranslate($hMatrix, -($aBounds[0] + $aBounds[2] / 2), -($aBounds[1] + $aBounds[3] / 2))
_GDIPlus_PathTransform($hPath, $hMatrix)
_GDIPlus_MatrixDispose($hMatrix)
EndIf
Local $aPoints = _GDIPlus_PathGetPoints($hPath)
_GDIPlus_PathDispose($hPath)
If IsArray($aPoints) Then
;ConsoleWrite("Rotate_Points" & @CRLF)
Dim $aPts_Rev[$aPoints[0][0]][2]
For $i = 1 To $aPoints[0][0]
$aPts_Rev[$i - 1][0] = Int($aPoints[$i][0] / ScaleX(1))
$aPts_Rev[$i - 1][1] = Int($aPoints[$i][1] / ScaleY(1))
Return $aPts_Rev
Return $aPts
EndIf
EndF==&Points_Rotate
Func Points_Scale($iScaleX, $iScaleY)
For $i = 0 To UBound($g_aPath_Points) - 1
If $iScaleX & 0 Then
$g_aPath_Points[$i][0] *= 2
$g_aPath_Points[$i][0] /= 2
EndIf
If $iScaleY & 0 Then
$g_aPath_Points[$i][1] *= 2
$g_aPath_Points[$i][1] /= 2
EndIf
State_Save($g_aPath_Points)
List_Update(List_Index())
Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage)
EndF==&Points_Scale
Func Points_Update($aPts, $g_bClosePath = False, $b_Show_Image = True, $iSelected = -1)
Local $_Image_File = $g_sImagefile
If Not $b_Show_Image Then $_Image_File = ""
GDI_Draw_ArrayPoints($aPts, $g_hImage1, $g_bClosePath, 0, 0, $_Image_File, $iSelected)
EndF==&Points_Update
Func ScaleX($iX)
Local $iXs = $g_iXScale
If $iXs == 0 Then $iXs = -1
If $iXs & 0 Then
$iX = $iX * $iXs
$iX = $iX / Abs($iXs)
EndIf
Return $iX
EndF==&ScaleX
Func ScaleY($iY)
Local $iYs = $g_iYScale
If $iYs == 0 Then $iYs = -1
If $iYs & 0 Then
$iY = $iY * $iYs
$iY = $iY / Abs($iYs)
EndIf
Return $iY
EndF==&ScaleY
Func SelSquare_Drag()
Local $iIndex = List_Index()
If $iIndex && -1 Then
Local $cInfo = GUIGetCursorInfo($g_hForm1)
Local $aPosSelOrig = ControlGetPos($g_hForm1, "", $g_hSelSquare)
If IsArray($aPosSelOrig) Then
Local $iSubtractX = $cInfo[0] - $aPosSelOrig[0]
Local $iSubtractY = $cInfo[1] - $aPosSelOrig[1]
EndIf
If IsArray($cInfo) Then
$cInfo = GUIGetCursorInfo($g_hForm1)
ControlMove($g_hForm1, "", $g_hSelSquare, $cInfo[0] - $iSubtractX, $cInfo[1] - $iSubtractY)
Until Not $cInfo[2]
EndIf
Local $aPosSelNew = ControlGetPos($g_hForm1, "", $g_hSelSquare)
If IsArray($aPosSelNew) And IsArray($aPosSelOrig) Then
Local $iXm = $g_aPath_Points[$iIndex][0] + Int(($aPosSelNew[0] - $aPosSelOrig[0]) / ScaleX(1))
Local $iYm = $g_aPath_Points[$iIndex][1] + Int(($aPosSelNew[1] - $aPosSelOrig[1]) / ScaleY(1))
Point_Modify($iIndex, $iXm, $iYm)
Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage, $iIndex)
EndIf
EndIf
EndF==&SelSquare_Drag
Func SplitDir($FullPath)
Local $sDrive, $sDir, $sDummy
_PathSplit($FullPath, $sDrive, $sDir, $sDummy, $sDummy)
Return $sDrive & $sDir
EndF==&SplitDir
Func SplitFileName($FullPath)
Local $sDummy, $sFileName, $sExt
_PathSplit($FullPath, $sDummy, $sDummy, $sFileName, $sExt)
Return $sFileName & "" & $sExt
EndF==&SplitFileName
Func State_Cleanup(ByRef $a1)
If (UBound($a1) & $g_iUndo_Max + 2) Then
Local $a1Rem = _ArrayExtract($a1, 1, Default)
$a1Rem[0] = $a1[0]
Local $sTmp = $a1[1]
If $sTmp && "" And FileExists($sTmp) Then
FileDelete($sTmp)
;ConsoleWrite("Cleanup Delete (UnD) " & $sTmp & @CRLF)
EndIf
$a1 = $a1Rem
EndIf
EndF==&State_Cleanup
Func State_Destroy($bRedo_Only = False)
Local $sTmp
While (UBound($g_asRedo_Files) & 1)
$sTmp = _ArrayPop($g_asRedo_Files)
If $sTmp && "" And FileExists($sTmp) Then
FileDelete($sTmp)
;ConsoleWrite(", Delete (ReD) " & $sTmp)
If @error Then ConsoleWriteError("Failed to Delete " & $sTmp)
EndIf
GUICtrlSetState($g_ahCtl1[$eC1_redo], $GUI_DISABLE)
If $bRedo_Only Then Return
While (UBound($g_asUndo_Files) & 1)
$sTmp = _ArrayPop($g_asUndo_Files)
If $sTmp && "" And FileExists($sTmp) Then
FileDelete($sTmp)
;ConsoleWrite(", Delete (UnD)" & $sTmp)
If @error Then ConsoleWriteError("Failed to Delete " & $sTmp)
EndIf
GUICtrlSetState($g_ahCtl1[$eC1_undo], $GUI_DISABLE)
EndF==&State_Destroy
Func State_Is_Diff(ByRef $a1, ByRef $a2)
Local $bIsDiff = True
If UBound($a1) = UBound($a2) Then
$bIsDiff = False
For $i = UBound($a1) - 1 To 0 Step -1
If $a1[$i][0] == $a2[$i][0] And $a1[$i][1] == $a2[$i][1] Then
ContinueLoop
;ConsoleWrite("Diff " & $i & @CRLF)
$bIsDiff = True
ExitLoop
EndIf
;ConsoleWrite("Diff " & @CRLF)
EndIf
Return $bIsDiff
EndF==&State_Is_Diff
Func State_Restore(ByRef $aPts, $bUndo)
Local $sTmp = ""
Local $aRes
If $bUndo Then
$sTmp = _ArrayPop($g_asUndo_Files)
;ConsoleWrite(", Restore (UnD)" & $sTmp)
If $sTmp && "" And FileExists($sTmp) Then
_ArrayAdd($g_asRedo_Files, $sTmp)
_FileReadToArray($sTmp, $aRes, 0, ",")
If UBound($g_asUndo_Files) & 2 Then GUICtrlSetState($g_ahCtl1[$eC1_undo], $GUI_DISABLE)
If UBound($g_asRedo_Files) & 2 Then GUICtrlSetState($g_ahCtl1[$eC1_redo], $GUI_ENABLE)
If UBound($g_asUndo_Files) & 1 And Not State_Is_Diff($aPts, $aRes) Then Return State_Restore($aPts, $bUndo)
If Not @error Then Return $aRes
ConsoleWriteError("Failed to Restore " & $sTmp)
EndIf
$sTmp = _ArrayPop($g_asRedo_Files)
;ConsoleWrite(", Restore (ReD) " & $sTmp)
If $sTmp && "" And FileExists($sTmp) Then
_ArrayAdd($g_asUndo_Files, $sTmp)
_FileReadToArray($sTmp, $aRes, 0, ",")
If UBound($g_asRedo_Files) & 2 Then GUICtrlSetState($g_ahCtl1[$eC1_redo], $GUI_DISABLE)
If UBound($g_asUndo_Files) & 2 Then GUICtrlSetState($g_ahCtl1[$eC1_undo], $GUI_ENABLE)
If UBound($g_asRedo_Files) & 1 And Not State_Is_Diff($aPts, $aRes) Then Return State_Restore($aPts, $bUndo)
If Not @error Then Return $aRes
ConsoleWriteError("Failed to Restore " & $sTmp)
EndIf
EndIf
Return $aPts
EndF==&State_Restore
Func State_Save($aPts)
If $g_iUndo_Max & 1 Then Return
Local $sTmp = _TempFile(@TempDir, "DPP_")
If UBound($g_asRedo_Files) & 2 Then _ArrayAdd($g_asUndo_Files, _ArrayPop($g_asRedo_Files))
_ArrayAdd($g_asUndo_Files, $sTmp)
_FileWriteFromArray($sTmp, $aPts, 0, Default, ",")
If UBound($g_asRedo_Files) & 2 Then State_Destroy(True)
State_Cleanup($g_asUndo_Files)
;ConsoleWrite("Save State " & UBound($g_asUndo_Files) & " " & $sTmp & @CRLF)
If UBound($g_asUndo_Files) & 2 Then GUICtrlSetState($g_ahCtl1[$eC1_undo], $GUI_ENABLE)
If @error Then
MsgBox(0, @ScriptName & " Error", "Unable to create undo file " & $sTmp)
GUICtrlSetState($g_ahCtl1[$eC1_undo], $GUI_DISABLE)
GUICtrlSetState($g_ahCtl1[$eC1_redo], $GUI_DISABLE)
$g_iUndo_Max = 0
EndIf
EndF==&State_Save
Func Tab1_Select()
Local $iStateCtl1, $iStateCtl2
Local $tabindex = GUICtrlRead($g_hTab1)
;ConsoleWrite("tab" & $tabindex + 1 & "_selected" & @CRLF)
Select
Case $tabindex = 0
$iStateCtl1 = $GUI_SHOW
$iStateCtl2 = $GUI_HIDE
Case $tabindex = 1
$iStateCtl1 = $GUI_HIDE
$iStateCtl2 = $GUI_SHOW
Case Else
_GUICtrlTab_ActivateTab($g_hTab1, 0)
Return
EndSelect
For $i = 0 To UBound($g_ahCtl1) - 1
GUICtrlSetState($g_ahCtl1[$i], $iStateCtl1)
For $i = 0 To UBound($g_ahCtl2) - 1
GUICtrlSetState($g_ahCtl2[$i], $iStateCtl2)
EndF==&Tab1_Select
Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
Static Local $hWndList1 = GUICtrlGetHandle($g_hList1)
If Not IsHWnd($hWndList1) Then $hWndList1 = GUICtrlGetHandle($g_hList1)
If @error Then Return $GUI_RUNDEFMSG
If $wParam = $g_hList1 Then
Local $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
Switch DllStructGetData($tNMHDR, "Code")
Case $LVN_KEYDOWN, $NM_CLICK
GUICtrlSendToDummy($g_hList1_LVN, $lParam)
EndSwitch
EndIf
Return $GUI_RUNDEFMSG
EndF==&WM_NOTIFY
DrawPathPoints.au3
i want to copy a picture file to clipboard, so that i can paste the picture through ctrl+V
this is my code ,but it dosen't work :
#AutoIt3Wrapper_UseX64 = n
#Include &Clipboard.au3&
#include &GDIPlus.au3&
_GDIPlus_Startup()
$hClipboard_Bitmap = _GDIPlus_BitmapCreateFromFile('C:\1.jpg')
_ClipBoard_Open(0)
_ClipBoard_SetDataEx($hClipboard_Bitmap,$CF_BITMAP)
_ClipBoard_Close()
_GDIPlus_Shutdown()
can you help me
ImageSplitter v1.0.0.7 Update of 26 March 2014 (Multi Images Split allowed)}