Что нового

Bitmap из его бинарного кода с возможностью изменения размеров

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
На днях собрал функцию из примеров других участников форума и написал пример, думаю многим пригодится такой вариант работы с изображениями.

Код:
#Include <GUIConstantsEx.au3>
#Include <WindowsConstants.au3>

Global $sData  = '0x'
$sData &= '424D361B000000000000360000002800000030000000300000000100180000000000001B0000130B0000130B0000000000000000000181140890240D992E0CB74D26BF522D9E2F108A220A82190C9020108102058C080091433FA87C8CA072828C3F346F0C0E74212675171B76181E691816782422A85553C07874BB7A70B76855AB6047B76A4CBF6F45B07140B16F42C16E40C47B55BE8563B8795FC2756CAC7B8EAC787BB76A51AA67696B507D5D405A9F5841E1B89EABC4D2A6B2BFD0AEA5D3A08DD6BAA28C1C099D2E13BB5734B95328A538108B1B038E230B8A240E871109902619A75C5BB1869BA6717B902D2879101770101B75242C761A207A1E2592464BB16163B666669C5A5A99544EA35945A86B53B77A57BE7B50BB8A67B68770BA7A6BA776779B6F79A7686FAF7D868C91A6B5958CC9A19292AAC88B9FC7BB85798E5146817089A4B9BFC0B8A9D9AA98C9B9B5CCC1CC9C2D10B94927C25D38A7441D891C009427098F2108952310A33124BE797BB38DA2B06E6E8120277B191D7B201F771923721A278B3C40A6595AA15E699248529749488C51599B5F62B17358B78E74BF9478B67E6C93717A89616F8D56666A4F6E724F6A8D57626F648867678CA37E7B9AA6B762A7D799AFB4D1B696AAA9B3596891866F78D9B99ABDBCB3B7C4C5C9A991BF5435C36137B24317962E0C952E16901E0E951E0BAF422FC98A8BBA89A7B4756A8B2724791723782932802523802329954552AE727C9E4F597B35487D44519C5756986B6FAF8A7FBF8F72A286859B76788B5C69674D77754F6E754E695B4F80775670836378465D9C6D5E7F7D728B3D75BF5A84B2BCAD9CA2B5B776B0DB8194A47D5E62A19EA689C0DBA6AAA8BE9280C25D37B8532B9E3A0F9C2F09A23219902010AC4F3EC38A87CB9AA2B2736E88352F7B1C23842C3378232E96454DB66B6EA76068894C5F8E46537E3F59805B6BA97371B09490A9938C9B6C7074618683657D775675565183765D7B655C845C618E7E6B7E62749F446DAD9088946794BF3275C36E7898858F9B6CA6DB74A0BCABA79D808199588CC38AA8C2A79792A0928CBE572FA239149F3D1AA43D209A250BBB6046CA8D95CEA1B1C177689B4C38772133883543882F2C985159B98699AD6D6E8035407D485A996975835268907C93AF8C8B94828A847B9089697C61648C7365886659895361956F698E51619A58689A7175953D70B35676AE8BA0A94795D8689AC491A0A1528DC14283B88EA0A496AEB15EA1DB517FAF8E92928C949B8FB0BC9E3208A13F139E361A993426BB644ED18E8ACFA3B3BC7D7A99483B90342C904249823A4AAB6C69C08C8E97637C87535F904B5283576D9D878C957F8B8279998E7D87827C91737EA36F65874F629769709B56639A506EA55D70A0436CA56178A55F7AB03A71C26A94B2418FD53385D299B3AF7AB6CC418ACA6386A776A4B65BB1E45798D062718E7A91B783B4E0A6C6B6A33B129C2F0C9C3516B15B42D39996D1A9ADC48D869E514B7A32378E4541995144A8767FB298A5A26A7074485E806F849A676B9A7588A79D9B8C8E9568749C7A819B7580A26481AA5E6792526DA86581A84B70A16083B0517BAB5081B3678CB44783BC4F8EC367ACC12183DC599CC477B6C23B99DF5696BF6E9EBB61AFDE4DA9E86694C28493A9C4C6D2D7C4BCF1BD74A44223A2381CB55033D99185C7A3A6C8A5A5B2644F914133884446985552C48A76B9A5A78D7090816770896C7F888A9CA99D9F9E8E9297A09C97A4AF6881B07686AD7489B26590B6647EA7618AB670A0BB5789B270A0BC5D96B86FA0C26A9CC25699C374B2C94396D42B89D150A8C02599DE288EDD72B7D57FC3E16BB6E79AAFC6C8C3B8EBDBAFFFE699FFDF87FFE182A63A16BA573BDD9381CF999CC39C99AE78668E544C93514BAA5B53B3858BBCAFB4AE8887887085837E979E91A1A2A8B3ADB6B7AA9EA0A2AFB3A0B4BE7595C07D92BA84A0C281AACC7B9CBE7DACC57EB3CC72A3C778B3C97CAFD378B5CC6AACCC68B0D35CAED13689D243A2CB1C9DDA0182EF5EB1E2B1D6D4C9D9C7D8D2A6FBE494FFFA98FFED83FBED98FAFBAAFBFFACC36035DD9072DBA29CC4A3A2B9836F9B503C9658559D6A64C09385C3AFAD9F8FA093818AA48FA19AA1B8B6C4C8AFBAC4B8CED3B9C5CBAFBCD0B0C8DB9AB3D78DAFD49EC4DBA0D0E28FBED68BCBDC8ACADD85BEDC85C6E18BC9DE83C0DE72BADF69BEE250A0D241A9D842BCE62EA1E382C4CEEEF2B7FFF4A3FFDA6DFFDE6AFFF685FFEF85FFE48FFFFCC6FFFFC4FFEE96E59773E1A896D5ADA7C9A693AB69519A52459E6254B99489BAC0B9BFAA9D9A7F849691A3B3BAC0DDE0DECBD6DECDD9DDD6DFE3D1E0E1CEDBDFD0DFE3C8DCE4C3DAE4CDDFE2C7E3E5C4DDE3C5E1E5BEDFE4B7DBE2BBDCE8B4D8E8B2D2E6A7D5E995CBE47FC2E483E5F192D9E0C8DFC0FFF7A1FFEF8DFFDB6CFFD870ECEEACD1D6C0ABC0CC8ECBE793CEF4B4C3D9C2B4B4EBA495E1B0A4DBB3A1CE9169A66B54A66E5FC38C70C9B7A7BCBBB0A09E9AA39CA7AEB0B1D3CBC1702018992215A4321D9E2E1C9D2E1B9D2D1C9A2D1B9E2D1D9F2D1E982E1B962D1C972A1D94291D8D2A209D261A602C62173BD31E3ABE122FC41839C81328B96A7EC6FFFFBBFFF093FFF18AF4E591CFCDB68EB3EA5890FD3981FF2C91FF38ABFF57B2FF6EB5FC73BAF1E7B79BE8B6A8DAAA82C5824AB87957CA9E74CDC6B5C9C3B3B9A2949A9D9DACB9B5D8E7DAD8B8B19F261EEC2B0CFF1F00FF2500FF2700FF2600FF2500FE2100FF2500FB1F00FC1A00FF2500FE2C00FA2600FF210099496B0075FF005BFF4C7AC20265D80051FD314CC9FFFFB6E7EDBDA7D1E7'
$sData &= '67AAFB4596FF3179FF2976FF1790FF269FFF5CBAFE98D6E5C0EBC1CDEFBAE3C9A3EDC69FD99F5CC1804CD79E6AEECAA1CFD8C8BEC9ABACA697ACB0A3D1D4BEE7F9E6D9B4ABCB655BC08888B63531AE6363AF4836CF4737C94A38C0635ABC4C42BF675DB06B69BA483CD2412CBF4C44E73D179342631482FD617BA9BEC2C02E5FAD005EFF4061D5EDF9F974BFFF4FA3FF3B97FD2D84FF458EFF6CB0EC98BED0CFD0AAF4E792FEF794FFFDAAFFFFCEECD8B8EBC68DDC9B51D59E5FEDC394E6DECFDDDEB6C9C096B1B8AAD3D4BCF2E5C6E5F0DEDCB8AFBF5C4CAFA1A2CDA49F8AA8ABBC8E8AADA3A1C39992BE7D81B68A85C09A8FC79588B0A3A6B59093A7B3BAF0523498325C1281FFBFB4B3808EAE738AB60047EE4261DBBDF2FC5DBBF954BEFF5DBAFE94C4E1DBCD8EFDD250FFD745FFE75CFFF57EFFFDA2FFFFD6FFFFF4ECCFB3DBB87DD7A967F2C28FF3DFC5DAE2CBDFDAADCAC2A2CFCBAFF4F1C9EFEBCCE4EDE0E0CBC0D12619EB605DEF2B13E44B45F53924E75954E75045CA8E88BA5847EC3B28F13A1FEA4C3CEA6057E55856EC5C338C5A75006BFD4480F3A6958E5179C00053F13B5DDBC2F9FE8FE2F9C4F0E2F5FCC0FFFB8EFFEE5FFFE656FFE25AFFD576EADE99D7F4BFD7F5E4E5F7E7F7DCB1D7BA7FDCB682F8DBBEDDE6D5DEE5C6D8C7A9C6C3ACF3EFC0F5F6CFE0E5CDE4F3ECE1D0C7DB1500FF2700FC3300FF2B00FF2800FF1100FF0D00FF0F00F91502F21300F31600F50D00F70800F90900FF13008E35600070FF005CFF4D87E70567EB005AFC395AD6F9FFF1F6FED5FFFFC4FFFFB1FFFCA6E0DAADB1C6C879AFDF49A6F443BCFF51BBFF4CB3FF4EB3F9D9C19CD2B48EE8CCAAD8E0D1CCDED1D4D6BCC1BDACC8CAB4F1F2CAE8EAD0D0DDD3D7F6EFE3D3C8E31B03FF2E00FF2300E52500D5311BC35348C37767BA897CB0978FB5A19FB4A7A6B3A7A4B3A29BB19C9CC57E7598718D3A75DC1760E60053FD006DFF005AFF3D5BD8FFFEEBFFFDDAFBFDDAC5EEE478D0F92CA8FF00A4FF00ACFF18B1FD57C2F8ADE1F3B1E4F6ABDFFAD7B69BCDB4A2CCC9C5B6D4DBC1DBD4BCC9BBA7B3A9D1D4B9D8E0CCC0D4CBB9DBD9C4EFF4E3CEC7CE0B00BB3720A36F64A6A5A6BED7D5D5EFEEE2FFFFEFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8FFFFE4FEFFE2EEE7EDDFC7CFC4B59E9CA94668A10042C53456E5FFFFE8D4EEE67AD3FB1FBAFF00B7FE00B4FA13B0FC40B5FB53BAFA79D8F8A2EFFBA0E8FAB2E7FED5BAA3D1C8BBBED4D2B0D1D8BCD0CEA0AEADA3B0ABCFDDC7BAD7D095C8CE99D4DDB1E5F4C3D7DD9A8E85C3DFDBECFFFFFEFFFFFFFFFFFFFFFFF6F7F6E3C9C8CE948BC37D67C58065C79288D1C1C6ECEDEEFFFFFFFFFFFFF2EFEEF4F1E9F5ECE2F2DFC8A6977E7A7779DDF7FE78DBFE43D2FE1AC0FB02B7FD00AFFB10B3FB1BBAFD09A7FD10A3FB26ACFA42AFF962BFFEB8ABA2B6BAC1B0CADCB5D3DCBACECB8C9CA5A2B3B3B3D6D295C8D381C2D88BD1E9A1DAF3C9E4F5FAF8F6FFFFFFFEF5F6FBFBFEF0F7F4CA8E77C43A15D23405D94C1CCD5019CD4E18DA531CCB3E15B63E13B5765DD0CBD4F7FFFFEBE7E5D9D7D0DBDCE0DAC9C5A69D90AEF9FF6BD3FB39BDFB22C0F92DCCF91DBFF901A6FA0095FB007FFB0089FC23A6FC5BB8FC6DC0FDB7B3AFB4C3C8B6CCDAB6CEDAAABAC37A8DA4AABAC097C9D080BBCE7DB9D584CDE99FDEFABAE1ECEBE1DCFAFBFAFEFFFFEEE3DFC3351FD33611ECA591F3E8DAFFFFFFFFFFFFFFFFFFFFFFFFFFF5EAF8CBB2ED8151BE4608A97968E6F4F8E5E8E4D3CDCDC1B9B29297939AEAFF61CDF850DCFC4BEFFD60F9FB68F2FB28BDFD0C9AFA1A9BFD129CFC26ACFD35A1FD2F9AF5B4B9B8B1C4CCB8CADCB9CDDC99AFC06A86A29DB9C986C1D479B3C97AB4CC82CBE59CD9F2C3E1EFEFE4E0FDFDFCF5F4EECE3316E2705AF8F7F4F9FCFCC27D76E1D3D2EDDDDDDDC5C5EEEBEBFFFFFFFEFFFFFBFFFFFFE1C9E06C2FB1522BE5EAF0D8D2D3BDB1A693958EA4F6FF6FE3FB4ADDFB19D1FA08C0F918C8FC2FC9FD22ABFA27A9FA39B8FD47BFFD4FB2FB53A8F3B8BABBBFCAD1C4CCD8BFCBD39EABB478859D95BDC681C0D376ADC974B4CF87D2ED9EDEF6C1DEEDECE1DEFFFFFFDD735FD76254FEFFFFFAFEFFF7E5D8DB6831CF7D63DEA28BC96224AC5D4DDBC9C8EBE8EAFEFFFFF2FFFFFEFFFAE6834CAD5D47DDEEF2B6A4A191928AA6F9FF61D1FB4AC8FC31C1FA23BEFD29C9FC49D8FD53CFFC5FD2FC71DDFD5ABAFC388EF62981EDA0ACBAACBCD0B3BDD9B8C1D59BA0B269759791B7C787B9D176ADCA68AECA83D1EFA1E7FFBDE1ECEEE7E6F9EBE3C04832F6F2F0FFFEFEFFFDFEF5E9DCD7693AE1915AE18A5BE99A71DF9988B9472BCF8D6BBF7166B97865F7FFFFFFFFFFC9653CC6A4A4C0C0B98C8A8591DEFF50B8F939B8FC28BEFA20BCFD18ABFA2DB0FB33ADFB36A8FC2997FA1A85F71882F4127CF4C2BBB6C1C6CCBFBED5BABDCF98A0B558668E7FA0C07CA6C96DA5C66AAECC7CCCED9AE1FEB8DCE7EDF0F1E5B29ECB7763FFFFFFEDEAEDF8FBFDF7EFE7C38268D76942D44113C96F5CC7756AF3BCA6DC5920CA714DD67D5FD29488C0705EE9C1B3C3674FBFCABE8987828BC7FF48A6FA2FACFD129EFA0188FD048AFC20A1FB2DA4FC279DFE2797FD2091FC1D8CFD1884FAB2ACB9B4BBCCC3BCCFC3BBC8B0AFB86A708E7B92B583AAC76EA6C46EAFCF77C3E49CE3FEC4E0E6EFF1EFE69E8DDD9789FEFEFDBA6D58DACACBF6FAF9C7998EF0E0D6F8F0ECF5D4C5BA4C27CE8777E37756C67159CC7A57D3693DBF8270E4D2CDD37153BDB5AF8B8F888FC4FF499BFD2490FB0B85FB0085FB0D9EFB1593FC1986FB2395FB1289FA1084FD'
$sData &= '0C7DFD0A7EFAB1A5AFB0B1C9BAB8D1B9B3C5B1AFB96F77905B75A177A4C668A7CA79B7DB83C6E1A8E5F5D3E0E0E9EDEDE79D84DD9785FEFEFEE47350CB7650DBA28ED49483BF9997EBE4E2FFFFFFF8E7D9D3A496CEA99EE3A17DC75D3AD8794AB36E60F1FAF5D4785DBAA4A48D97928FC4FF468CFC257DFC0A7DFD0692FC0D91FC0778FB1687FD137DFD0A74FD0872FD0570FB0B7CFEABA8ACB0B7C4C2C6CFC5C1C2C1BCB5A6A5AA677295708FB36FA7CF72B1D589CBE2B9E6EDDDE0DAE4EDEBF2B499C7614CFFFFFFD07E62DE7E4AE0A172CE8546D16F4BDCA49BBC7470DBB7B2D2B1A7E9D3D1F3EBDEB33D24E6B9A3C8674BEDF1E8D36B52BDAEB18A908B8CC0FF4985FC2476FB0A83FB0485FD0060FC0471FA0879FD0165FC0160FC0059FC015CFB0465FCAF928FB19DA5C1ADC2C6ADBFBEA8AEA7A6AF78819B5162906593C374BADC8AD0E7D0EBF3E7E2DEE1DFDCFEEDDEC23313E0D3D7D1A799DA7D58D33B0BDD8F62DC9882D36B3AD58060CC7A57D78956FFFFFFF1E1DADAA497F7F5F4F5FFFFEDD6C5C34C35C0CBC88A868491BFFF467CFA287BFC0F88FD006DFA046CF80678FB026EFA026FFC0171FD0174FD087CFD0D83FDAB9DAFA4A4B0AABAC3BCBFC7C9C0BFB6B7B6A2B8C3779BB9528AB36CB6DAA8E2EBEAFBF2EBE7E5DBD8D7FFFFFFE3844CB95030DBC0C4E8AF9AE49F8DD0A9A5D27C62EA9467D38460D9A480DD895EFEFDFDFBF6F8FFFFFFF1F6FBECFEF9C64828D18981BFCDC38B86818CCAFF4394F9248BFD0771FA006BFD047AFC0674FB0B76FC0C78FD0E76FD0C77FB0B7AFC0D7FFCC3B4B4B8A3A0B3A9A5B8B7BBC5BBBECBBAB8ADBDBA9BC8CF9FC4D1ADCFCADEECD4FFFFEDEAE8E5DED9D6FEFEFEF5EFE2DB620EB57C63F1FFFFFFFFFFD29372D43D08B96751C97447D27648E08363FEFFFFFFFFFFF0F7F5D1D1C8B7422FC0281ADCE1E5B5AAAA898E878FE0FF4CB3FD2186FB1482FC1183FE0571FD0973FD0C74FD127BFD1D86FD2891FF3197FF379BFBC4C3CDBCBBC0B2B3B1B0B8B3B9C4C1C9D3C3C7DBC6CEDCC7E9E7C8FDFCD6FFFDE8FEFEFAE9E7E7E0D8D8FFFEFEFAFEFFF1DEC0DB6905AD6331CBC5D3FFFFFFDF8A6AD29C88F2F9FAEFA28FD0634AFCFBFBC19E94AF514CB00000C62A1CDDDAD6C8CECFB8A9A48F9388A9EEFE5DAFF942A6F838A8FC1D8BFC228BFC2282FD2079FC2176FD1B70FD1F73F82C7DF43888F5D5C4C8C4C3C4AEBBBAADB9B4B8C7BCD5D0BAEBD9B9F9E7C7FEF8DEFEFEFBFCFDFFFEFFFFEAE7E8DDD7DAFFFFFFFAF5F7FAFDFFF8E3D4F0862BBF4900AB776ECCD4E1F7FFFFFFFFFFE59987CD6F67FEFFFFB86D57C8695DD2898AE2EFECC7D0D0C6B7B7BCB4A38F9187AAE2FF7FC4F866C2F8419AFA3592FE2D86FF2479FD287CFB2C7EFC3682FE3882FA3D7DF0407BE7CBC2C8CED2D2D3D9D4E0D3CBF4CEB5F6CFA1FBECBAFDFFE2FEFFFBF9FCFEFCFCFDFFFFFFE9E8E4DCD9D5FFFEFFFBFAF8FBF6F7F9FFFFFBF7F5FAB57BE15E04BA3A00AD5333BF8E8BD2BDB4DFCFC4E9E5E3DCBAA6E8CAB9D68F77C9B0A6C8C9CAC9BABEBBB2AC8D8F8BB6E4FE84B6F65B97F85698FC4993F43F83F04283F23B79EE3670EC3173ED3C7AE74E80E45C8AE6F3D6CBEDD0C2E9C9B9F1DACAFBF1E3FEFEF0FEFFF6FCFDF8FAFCFDFBFCFEFDFCF5FFFFEBE9E9D6DCDAD6FEFEFEFAF9F8FCF9FBFAF8F8F9FAFCF9FFFFFBEDE4F5B07AEA6320D82B00CB1600C11100B81300BC1902BD0600A80000C4847CCFE0DCC7B7B2BEB1A68C8E8E99C4FD5D92EC5393F64986EB3D6DE23E68DA406CD8476FD6527CDE547DDC5176D3516FCC526FCCE6BCB2ECDBCBF7F5DDFEFFEAFCFFF6FCFEFDFBFCFEFAFBFEFCFDFFFEFDE6FBFCDBFEFEE2EBE9E0E4DFDEFFFFFFFCFCFDFFFBFEFCFCFEFAFBFDFDFAFBFFFFFFFCFFFFFAFFFFF4E3D6ECBAA7E48F77E08363DC7C62D98778D7AEAAE7E4E6DDE2DDCDC8C9C2B6B18B859084A9FB5E91EA4D84E9315BD8304ACE3A52C73E53C34451BD4554B94E61BC5D70C3687BC86A7EC5FEECBFFFE6BFFAE5C7FBFBEAFCFCFEFDFBFFF8FCFFFCFFFCFDFED8FCFBBBFCFAC1FFFFE0E9E8E7D0CDC7F2F0EEEFECEEF3F0F1F9F3EEFCF3EFF8F0EFF6EDEAFAEDE6FCF3EDF9F9F6FEFFF8FBFFFDFCFFFFFCFFFFF7FFFAFCFEF6F2F3ECE9E0D8E1D6CCCCBFA5817E807AA3FC5B80E03F59D23342C93438BC393AAD403BA84F43A650479E4B439F4E47A05A55A46E69B3FABB85F9C78BFBF1CAFAFFFDFDFCF5FEFEF4FFFFEBFCEEBFFDD998FFD794FDDFA5FCF7CFF9F9F8D8D6D3DAD8D7DDD6D2D1CFCFBDD0DBBCCEDAC3D7D9C0D1D4BAC4D2C0C7D5B9C2D1BFBDD2BFBECFBDC0D0C0C4CFBEC4CEBDBECEBABCCCB4B3C9A9ABC695A1BD829BD06C8EF24D61D03B44C4393CB84238A64833984E329451318B53328857388B583C8B563E8B57418BFBEBB7FEFFD2FDFFDBFBEEC3FBF1BFF9F0B2F5C988F6AD74F8AD79F3B47AF9BA84F5D4A3FEFDEEFFFFFFFFFFFFFFF5E0DED2CB98D2FF72C5FF8AD6FF87D2FF89C8FF8AB9FC8CB6FB8DB8F79CBFF6A0C6FD9FBDFA98B3F190ABEE92AAED88A7F285A0F384A4F66D8EEB4F5ECB4747C1463EB74536A34C3291562F815B3078632C73622B6F612A6E5F2B71603275633678FFEEBAFBDDACF5D7A7FCEFC1FFF2BAFBCD99FAC894FBCEA9E1C0A9E2B18BF5B281FFCFA5FEF7DDF8FDFEFBFDFDFDF1D9DEB69E7BBBE94DB0FF51A9FB4B9BF662A5F36FA3E96EA5EC6FA4E7799DE17A9CE27189D56F81D6727FD87783D37A96D57F9ADC6D7DCD5256B95349BB4D40AA51379D51328C532C7B602B75642D6C6C2C5E6B2B5B6B2C5A682B5B672B5E672E62ECAB75F6BC8BFFE3A8FDE0A3F4BA94FEC9A7'
$sData &= 'FEE2BCE7D3C1DBB3B3EAAA99FCBC94FBCA9DFFE4BAFBFFF5F7FCFEFEFEF1F0CEAB90A5BD52A6F241A0F85287EA5588DF527DD04D7EDA5077D35770C85F77D16675C9647AC1728AC58898C58591C46668BB514AAF4E3FA4543EA2513A97502E865B2C815F2D7963286B69295D732D56722A53712951702953712C59702A59F1BE95FFD39CF3BE8BDEA887ECBFA4F8D0B0CDBCB7AFA6ACC8ACA8D2B2B4C4B4BBD3C4BBEFD0AEFFF4D7FBFFFFFAFCFFFCFBF5E9D7CAA3B8C5619CCF618BCF4D8BD6537CD34E84D25582C5637DB76D80B77C85BA8394B7919FB8807B9C634D8E55378C52399153389053308659328659337D5E28715F2C70652D696B2A5C6F264F752A4F762851792A54762D556A1E50EDBC8BD5A176C08C84DBAE9FF5C4A4B9A6A69192ABBDA3ACB2AEBE8196C37EA2C895B1C4AAB2B8EAD5C4FFF9E9FEFFFFF7FDFFFEFFFCFDF8ECDEDED5BCC0C59BB3CC8CA2C1839EC299A1B0A4A6AAAEACA7B2B1AD988B9B756A8E5F3D755E2C705E2E7958307A59317C5B2D7A5A2E775930745F2C6B6328616A2B626E2B617026547526497B2F507A2F50691646823F54A07A709C7B83D3A696E7B094AD909A8581A1999AA7ACACB5708AB16789C16C96C65987BC769AC79FA5BCD3C8C1FCF5E4FFFFFAFFFFFFFDFFFFFFFFFFFFFFECFFF4D6F1D2B5DAD0B9E1CAACCCBDACBCA195A28484784E6D66386C61366E632766692A7365296F632A6B642D6E5E2A6D612E6D662E676A2B5D6A2657702A58772D4D8031447D2D4567133E8B4A5DDFC6998E6981BA8F90CA9B89907786726D988D8AA29E9CA76F80A9637AAC788FB45879AA5475AF6E84B06879A6829DB9AFA9ADCCC9C6ECE4E1F1F1EFF8F4EDF7F2DFF7E2C5E9C6A6CEC1ABC6A8999A7F868658677545606C37616F305F693E6767315F6E34646E2F5E6928586A2A5A6A2A5C69275C6E2759722B5372244877233F85313E882D3B781D378D4447CBA680621236B78B86BB8979895F6F686387807D9BA08F9E867E975A679C7A88A2717F9D4C679B6A74A778688D596A9A7184AD78779B708CAA9797A69FADB6CEBAAEC5B3ACBDA3A6A5948F8B818E8866776F46666F30536C3458763E5D7A35517842627F40617F3B5C792E5373254D75234C78244C7520477A22417A233C81273A8626338E2C368320327C222DDFA279701F3878295A'


$hForm = GUICreate("Size BinaryImage", 500, 300)
$hPic = GUICtrlCreatePic("", 50, 50, 48, 48)

$iPos = ControlGetPos($hForm, "", $hPic) ;~ Берём размеры контрола ($hPic)
$hBitmap = _WinAPI_CreateBinaryImage($sData, $iPos[2], $iPos[3]) ;~ Берём бинарний код картинки и указываем её размеры ($iPos)
DllCall("user32.dll", "hwnd", "SendMessage", "hwnd", GUICtrlGetHandle($hPic), "int", 0x0172, "int", 0, "int", $hBitmap) ;~ Ставим в контрол ($hPic)готовую картинку

GUISetState()

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit	
	EndSwitch
		
	Switch CursorGetMsg() 
	    Case $hPic
		    $hBitmap = _WinAPI_CreateBinaryImage($sData, $iPos[2] + 20, $iPos[3] + 20) ;~ Берём бинарний код картинки и указываем её размеры ($iPos)
            DllCall("user32.dll", "hwnd", "SendMessage", "hwnd", GUICtrlGetHandle($hPic), "int", 0x0172, "int", 0, "int", $hBitmap) ;~ Ставим в контрол ($hPic)готовую картинку			
		Case Else
			$hBitmap = _WinAPI_CreateBinaryImage($sData, $iPos[2], $iPos[3]) ;~ Берём бинарний код картинки и указываем её размеры ($iPos)
            DllCall("user32.dll", "hwnd", "SendMessage", "hwnd", GUICtrlGetHandle($hPic), "int", 0x0172, "int", 0, "int", $hBitmap) ;~ Ставим в контрол ($hPic)готовую картинку	
	EndSwitch		
WEnd

Func _WinAPI_CreateBinaryImage($hBinary, $hWeight, $hHeight)
	Local $hSize = BinaryLen($hBinary)
	Local $pStruct = DllStructCreate("byte[" & $hSize & "]")
	DllStructSetData($pStruct, 1, $hBinary)
	$hData = DllCall("kernel32.dll", "handle", "GlobalAlloc", "uint", 2, "ulong_ptr", $hSize)
	$pData = DllCall("kernel32.dll", "ptr", "GlobalLock", "handle", $hData[0])
	DllCall("kernel32.dll", "none", "RtlMoveMemory", "ptr", $pData[0], "ptr", DllStructGetPtr($pStruct), "ulong_ptr", $hSize)
	DllCall("kernel32.dll", "bool", "GlobalUnlock", "handle", $hData[0])
	$pStream = DllCall("ole32.dll", "int","CreateStreamOnHGlobal", "int", $hData[0], "long", 1, "Int*", 0)
	Local $GDIPlusDll = DllOpen("GDIPlus.dll")
	Local $tInput = DllStructCreate("uint Version;ptr Callback;bool NoThread;bool NoCodecs")
	Local $pInput = DllStructGetPtr($tInput)
	Local $tToken = DllStructCreate("ulong_ptr Data")
	Local $pToken = DllStructGetPtr($tToken)
	DllStructSetData($tInput, "Version", 1)
	Local $aResult = DllCall($GDIPlusDll, "int", "GdiplusStartup", "ptr", $pToken, "ptr", $pInput, "ptr", 0)
	If @error Then Return SetError(1, 0, 0)
	$GDIPToken = DllStructGetData($tToken, "Data")
	$pBitmap = DllCall($GDIPlusDll, "int", "GdipCreateBitmapFromStream", "ptr", $pStream[3], "int*", 0)
	$hBitmap = DllCall($GDIPlusDll, "int", "GdipCreateHBITMAPFromBitmap", "handle", $pBitmap[2], "ptr*", 0, "dword", 0xFF000000)
	If @error Then $hBitmap = SetError(1, 0, 0)
	If Not @error Then $hBitmap = SetExtended($hBitmap[0], $hBitmap[2])
	Local $tObj = DllStructCreate('long bmType;long bmWidth;long bmHeight;long bmWidthBytes;ushort bmPlanes;ushort bmBitsPixel;ptr bmBits;')
	$GetObject = DllCall('gdi32.dll', 'int', 'GetObject', 'int', $hBitmap, 'int', DllStructGetSize($tObj), 'ptr', DllStructGetPtr($tObj))
	If (@error) Or (Not $GetObject[0]) Then Return SetError(1, 0, 0)
	$GetDC = DllCall('user32.dll', 'hwnd', 'GetDC', 'hwnd', 0)
	$DC = DllCall('gdi32.dll', 'hwnd', 'CreateCompatibleDC', 'hwnd', $GetDC[0])
	$SizeBitmap = DllCall('gdi32.dll', 'hwnd', 'CreateCompatibleBitmap', 'hwnd', $GetDC[0], 'int', $hWeight, 'int', $hHeight)
	$SelectObject = DllCall('gdi32.dll', 'hwnd', 'SelectObject', 'hwnd', $DC[0], 'ptr', $SizeBitmap[0])
	$CompatibleDC = DllCall('gdi32.dll', 'hwnd', 'CreateCompatibleDC', 'hwnd', $GetDC[0])
	$SelectObject = DllCall('gdi32.dll', 'hwnd', 'SelectObject', 'hwnd', $CompatibleDC[0], 'ptr', $hBitmap)
	DllCall('gdi32.dll', 'int', 'SetStretchBltMode', 'hwnd', $DC[0], 'int', 3)
	$StretchBlt = DllCall('gdi32.dll', 'int', 'StretchBlt', 'hwnd', $DC[0], 'int', 0, 'int', 0, 'int', $hWeight, 'int', $hHeight, 'hwnd', $CompatibleDC[0], 'int', 0, 'int', 0, 'int', DllStructGetData($tObj, 'bmWidth'), 'int', DllStructGetData($tObj, 'bmHeight'), 'dword', 0x00CC0020)
	DllCall('user32.dll', 'int', 'ReleaseDC', 'hwnd', 0, 'hwnd', $GetDC[0])
	DllCall('gdi32.dll', 'ptr', 'SelectObject', 'hwnd', $DC[0], 'ptr', $SelectObject[0])
	DllCall('gdi32.dll', 'ptr', 'SelectObject', 'hwnd', $CompatibleDC[0], 'ptr', $SelectObject[0])
	DllCall('gdi32.dll', 'int', 'DeleteDC', 'hwnd', $DC[0])
	DllCall('gdi32.dll', 'int', 'DeleteDC', 'hwnd', $CompatibleDC[0])	
	If Not $StretchBlt[0] Then Return SetError(1, 0, 0)
	DllCall($GDIPlusDll, "int", "GdipDisposeImage", "handle", $pBitmap)
	DllCall($GDIPlusDll, "none", "GdiplusShutdown", "ptr", $GDIPToken)
	DllClose($GDIPlusDll)
	DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $pStream)
	DllCall("kernel32.dll", "ptr", "GlobalFree", "handle", $hData[0])
	Return $SizeBitmap[0]
EndFunc

Func CursorGetMsg($iState = 0) 
    Local $aCursor = GUIGetCursorInfo()
    If Not @error Then
		If $iState = 0 then
		    Return $aCursor[4]	
		ElseIf $iState = 1 then
			If $aCursor[4] And $aCursor[2] Then
			    Return $aCursor[4] 
			EndIf
		ElseIf $iState = 2 then
			If $aCursor[4] And $aCursor[3] Then
			    Return $aCursor[4] 
			EndIf	
		EndIf	
    EndIf 
EndFunc


Ну и наглядный пример в прикреплённом файле для чего я это делал.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
А зачем нужна возня со stream (кстати, его необходимо освобождать), если картинки все равно хранятся на диске? Не проще ли читать их непосредственно из .bmp? В этом случае и GDI+ отпадет за ненадобностью.
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Всё проще, но я хочу все картинки объеденить в один файл как показано в примере (во вложенном файле), тем самым создать наиболее похожий файл скина как например в других скиновых модулях написанных на других языках и имеющие dll, так как Autoit не имеет возможность создания собственных dll я решил сделать так а не возится с кучей разных картинок доступных для самостоятельного изменения через разные редакторы изображений.
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
Viktor1703
Вроде сложный код, а простая оптимизация по нагрузке на проц отсутствует. В цикле постоянно вызывается CursorGetMsg(), которая при любых результатах вызывает _WinAPI_CreateBinaryImage, а значит в цикле тысячи раз в секунду выполняется _WinAPI_CreateBinaryImage. Во первых, если курсор не двигается, то не нужно выполнять функцию, а ещё лучше, если курсор не в клиентской области приложения или даже не над изображением, то не нужно выполнять функцию.
У меня в трее всегда иконка "AnVir Task Manager", показывающая нагрузку на проц, хард, память. И нагрузка на процессор 20% а при движении мыши 80%.

Кстати, почему не использовать _GDIPlus_MatrixScale?
Код:
#include <GUIConstants.au3>
#include <ScreenCapture.au3>
#include <WinAPI.au3>

; Create GUI
$hWnd = GUICreate("GDI+ Example", 500, 500)
GUISetState()

; Start GDI+
_GDIPlus_Startup()
$hGraphics = _GDIPlus_GraphicsCreateFromHWND($hWnd)
_GDIPlus_GraphicsClear($hGraphics)

; Take Screenshot at bottom left of screen
$hScreenCap_hBitmap = _ScreenCapture_Capture("", 0, @DesktopHeight - 500, 500, @DesktopHeight)
$hScreenCap_Bitmap = _GDIPlus_BitmapCreateFromHBITMAP($hScreenCap_hBitmap)

$hMatrix = _GDIPlus_MatrixCreate()
; Scale the matrix by 2 (everything will get 2x larger)
_GDIPlus_MatrixScale($hMatrix, 0.5, 0.5)


_GDIPlus_GraphicsSetTransform($hGraphics, $hMatrix)
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hScreenCap_Bitmap, 0, 0, 500, 500)
Sleep(1000)

_GDIPlus_MatrixScale($hMatrix, 2.0, 2.0)

_GDIPlus_GraphicsSetTransform($hGraphics, $hMatrix)
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hScreenCap_Bitmap, 0, 0, 500, 500)

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

; Clean up resources
_WinAPI_DeleteObject($hScreenCap_hBitmap)
_GDIPlus_BitmapDispose($hScreenCap_Bitmap)
_GDIPlus_MatrixDispose($hMatrix)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_Shutdown()
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Не спорю, нужны доработки, я же и выкладываю код и буду рад если его доработают до совершенства, так как я только осваивающий и ещё не полностью разбираюсь во всех тонкостях программирования на Autoit
 

Dellroc

Осваивающий
Сообщения
151
Репутация
31
как получить бинарный код картинки?
 
Верх