Вверх ↑
Этот топик читают: Гость
Ответов: 1263
Рейтинг: 47
#1: 2023-03-17 00:18:13 ЛС | профиль | цитата
Приветствую! Не подскажете как заставить круглую форму вращаться на месте, а не гулять по экрану? Делаю калейдоскоп. Специально сделал заливку непрозрачным синим чтобы было понятно почему она прецессирует, а не вертится на месте. Как избавиться от углов из-а которых происходит смещение на экране? Или может есть более простое решение. Но мне нужна форма созданная на основе круглой картинки, чтобы ее можно было менять. Пытался вращать картинку с прозрачным фоном с помощью элементов Alfa rotate но чето не вышло ничего.
https://forum.hiasm.com/getfile/39580

--- Добавлено в 2023-03-17 00:22:40



Редактировалось 4 раз(а), последний 2023-03-17 00:22:40
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
файлы: 1Круглая вращающаяся форма.zip [59.2KB] [159]
vip
#1.1контекстная реклама от партнеров
Ответов: 698
Рейтинг: 143
#2: 2023-03-17 07:35:42 ЛС | профиль | цитата
Aziz писал(а):
как заставить круглую форму вращаться на месте, а не гулять по экрану?

Как вариант - https://forum.hiasm.com/getfile/39581
Нет, тоже убегает..

Редактировалось 1 раз(а), последний 2023-03-17 07:46:19
карма: 15

0
файлы: 1form_rotations.zip [30.7KB] [161]
Ответов: 18
Рейтинг: 20
#3: 2023-03-17 12:16:30 ЛС | профиль | цитата

Make(delphi)
ver(4.05 build 186)
Add(Bitmap,15635229,518,343)
{
Picture=[ZIP76420F0078DAEDDD09FC6573FD3FF0AB98CA648D12922899CA5AD1945D240C622415852C4942A14C0A5154949D48A43451520625854A641DDB28FB926D185B14A65FFEBDCFEFFF9DDF9DFBBDCB593EF7BB9C793E1FE7FDD0C3CC7C4CF77BEFEB9C7BCEE7F3FEAC37E1A1BDC736C26AFFADE5FF5BCFCEF5BF355763B1ECDF9FF7FF7F1D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A0A2B77EF5A5EE879708A01E792EE7016A1FE9421EA0C6912EE4016A1FECE21D6064A6FAA6BF5CA6FB21E101464BAAF78CF47221EFC50718FA602F11E94543DE8F0060C8823D49AAE74C783F08807E077BF254CF93F07E1C007D0AF6BEA67ACF84F7430118BDC12EDE016A19ECE21DA096C12EDE016A19ECE21DA01FD93EECC1DE29DEFDB0004675B08B778054D93EA282BD6DBCFB91018CEA8B7697EE00B5BC6817EF00F5BB6897ED00B5BC6877D71DA07E17ED2EDD016A79D1EED21D40B60308F6519AEDE21D60B45FB4BB740790ED00B25DB603C876F10E20D8653B806C97ED00B21D40B6CB7600D92EDB0164BB6C0790EDB21D40B6CB7600D90E20DE653B806C17EC00B25DB603C876D90E5022DBEDBB04E0D2DD453B806C97ED006ECBB8210330875CBA0B76809A5DBABB6807A8DFA5BB6C07A8D9A5BB6007A85FBC0B76809A65BB8B76809AC5BB6007A859BC0FFE2BC976808AD93EBCF12ED8016A16EF821DA066F12ED8018626DE872CE1053B409DE2BDD37FD48F03A0DFF1DE8F84EFF2DFF2830018B2784F95F0DDFF137E0400C392F0E542BEE798821D60D8E33D4FCEE71FC40B0E300213BEF4E14506A853C27B6101EA94F05E4C80DA84BC970EA00651EFC5010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DA7AF39233FEF7F05200D42CD8253C408DB35DC203D435DB853C408DB35DC203D435DB253C405DB35DC2038CC66CBF76A3B5FF7B487880FA65BB8407A86BB64B7880BA66BB8407A86BB6E70F792F29C0A8CB76090F50D76C77A306A0AED92EE101EA9AED121EA0AED92EE101EA9AED121EA0AED92EE101EA9AED121EA0AED92EE101EA9AED163D01D438DB253C405DB35DC203D435DBDD8A07A86BB64B7880BA66BB8407A86BB64B7880BA66BB8407A86BB64B7880BA66BB8407A86BB64B78188D79E21839C748CE768B9E40B03B6A9CED121E64BBA3AED9EE460DC876475DB35DC2836C77D432D8253C8CC06C1FED79E290F0806C77487890ED0E878407D9EE70487890ED0E092FE141B63BE68490F72105D9EE90F0806C77487890ED0E875BF120DB1D0E090FB2DDE190F020DB1D125EC2836C77487890ED0E878407D9EE70487890ED0E878407D9EE7058F404B2DD21E1253CB25DB63BDCA801D9EE70487890ED0E878407D9EE70487890ED0E878407D9EE90F0121ED9EE70487890ED0E878407D9EE7058F404B2DDE118E2849715C87687A37E092F2B90ED0E87EB7690ED0E87FBED20DB1D0EA90EB2DDE190EAC87687C39C7690ED0E875407D9EE70487590ED0E875407D9EE70487590ED0EA90EB2DDE190EA20DB1D0EA90EB2DDE1B0040964BB43AA4B7590ED0EA90EB2DDE190EA20DB1D0EA90EB2DDE190EA20DB1D525DAA836C77487590EDB2DD610912C8768743AA836C7738A43AC8768754F70905D9EE90EA806C77487590ED0E875407D9EE70487590ED0E4B90803E65BB63E41C521D90EDE25DAA03B25DB64B7590ED0ED92ED541BC3BE6906C97EA0045CFB3521D40B64B7500D96E0912C01C9BED521DA04ED92ED501EA94ED521DA04ED92ED501EA94ED521DA04ED92ED501EA94ED521DA04ED92ED201EA94ED521DA04ED92ED501EA94ED521DA04ED92ED501EA94ED521DA04ED92ED501EA94ED521DA036D96E0912409DB25DAA03D429DBA53A409DB25DAA03D429DBA53A409DB25DAA03D429DBA53A409DB25DAA03CC51D9EEB502A853B67B9500EA94ED5E1F803A65BB5706A04ED9EE3501A853BC7B290000000000000000000000000000000000000000000000000000000000000000000000000000000018766F5E724697C3EB03508F3C97F300B58F74210F50EF5497F000754D75090F30C253FDAD5F7DA9CB21E1014651B0778FF41221EF350718AE602F1AE98542DE2B0F30C4C15E3DD5F324BCD71F6068823D6DAAF74C783F0580D11BECE21DA096C12EDE016A19ECE21DA096C12EDE018620DB873ED83BC5BB9F0EC0A80E76F10ED0A76C1FDE606F1BEF7E4600A3FAA2DDA53B402D2FDA5DBA03D4EFA2DDA53B402D2FDA5DBA03C8760046FE0D19B765006A79D1EED21D40B60320DB0104BB780790EDB21D40B6CB7600D90E806C0790EDB21D40B6CB7600D92EDB0164BB6C0790ED00E25DCF0100D92EDB0164BB6C0718AE6CB73707804B7717ED00B25DB603B82DE3860C40FD2EDD053B40CD2EDD5DB403D4EFD25DB003D4ECD2DD453B40CDE25DB003F42FDB8725DEDBFE35FC7400466FBC0B76809AC5BB6007A859BC0B76809AC5BB600718C6784F9EF09DFE2B5E7F80218EF72409DF6570AF3CC070C57BB990EF39A0D71C6024C47B9E90CF3988571B6004267CE9C32B0C50A784F7AA02D429E1BD9200B50979AF1B403D72DEEB0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A4F5D24B2FD5BADEF296B70CFAFFFCECB3CF161EE790430E29FCDA9E7CF2C91DC7BBEDB6DB92FCFCCE3EFBEC5963AEB5D65ADED0406EE3C78FAF9C73AD7EF5AB5F75CDD2DB6FBFBDD078975D7659E9FC3FEFBCF3668D3366CC98DA9FEFE6849A316346E3D65B6F6D3CFCF0C3A5C7B8F7DE7B0BBFAF9F78E289AE63A63076ECD8C6628B2D269880C2965A6AA9C6AF7FFDEBC677BEF39DC691471ED938EBACB386E43BE2507FE77CEEB9E79C0BD56CB5E5965BE67E0FAEBAEAAA3DC75B7EF9E5050A501B6F7FFBDB7365E9F5D75F9F6BBCB85FE0DCA3FA551FFFF8C77BBE07E79D77DED9FECC5D77DDD538F8E0831B13274E6C6CBCF1C68D49932665DFF7E3FB3B405DC4BDD0C8BCBFFFFDEF8D2BAEB8A271D34D3775CCD23BEEB8A331DF7CF3751C2BBE3F39E7A87E579C9F274C98D0F63DF895AF7C65D6EF7BFEF9E71B8B2FBE78C7F7EB2B5FF9CAC6FCF3CF2F048051EFB4D34ECBE6F3B4B3F6DA6B379E79E6998ECF320F3DF4D0C6873EF4A1C6BAEBAEDBD879E79D1B53A74E75AE51C352D3A74F1FF4EFE25C0E302738E38C331A7BEFBD77CFDF3779F264E70C35EA6AB9E596CBFD5978F9CB5F9E7D1EE699671EC1008C1AABAFBE7AE3A9A79ECABE4FE775E595573A47A821A97DF6D9A7B1E0820B66EFBB4D36D9A4D418659E8BEFBEFBEED99FBDFAEAABB367F4AF79CD6BB27F1FFFDC61871D0407302CE2996064D3942953B235B8715FFD8F7FFCE36C99376EDCB8426396CDE7FBEEBBAFB1EDB6DB364E3DF554E72B55780DC52AABAC52789C33CF3CB3D4E7A6D3780F3EF8A05001864DCAF567E1E28B2F2E95D12F7BD9CB661BE75FFFFA9773570DEA6B5FFB5A63FDF5D74F36DE36DB6C93EC5AF298638E29F59999397366DBF16EB8E186249FC9F82C7CE0031F68BCFFFDEF6FDB670718FDD65C73CDC675D75DD798366D5AE3B1C71E4B32668CD529EF5E78E185C2E31D70C001C9BE73391F8EFE7AF7BBDF9DF467B9C20A2B243B9F9F7BEEB949AF81EFBFFFFE249FC985175E78D698C71F7FBCE0831A3AE9A49392F7AD8AF5E29DF229BE2317B5C71E7B243B9F6FBFFDF6CE896AB6FAF9CF7F9EEC7C5EE6FD1DEB30FBDD4BAEF97C1E3D1981FA39FAE8A367CB8EB9E69AABF298B19E3C653EB5FE1DF356AC7B6B157D3D9CC354BB7BF8ADFEF0873F941A6B89259628F4FEFEE637BFD9F7F379CC9F8F797731BF6ED75D77157C5043DFFEF6B7B3CCB8FBEEBBB37FAEB4D24A95C74CDDEB327A7894CDE99FFCE427D97AF5830E3A28FB1EE6DCA53A555C879E78E2898DCB2FBFBCD238F1FC2AE5E765F3CD3717544061AF7EF5AB2BFDF9F7BDEF7D3DF3A9C87AB5051658C0B9468DBADA69A79D72BDBFEFB9E79E417F36FA24FEE8473FCAF64988E7F1D11B1160A8C5FC9D3C7977C20927E41AEFA1871E727E50A3B23EFDE94F777D6FB7F656E8760D107D670086CA9E7BEED9F8C52F7ED15871C515B3FED473CF3D77F6BFA3AFF57FFEF39FB67377E3FB7C3BF11CFFCE3BEF745E50A3BA62BFDFD6F7F832CB2CD378F2C927DBEED30B30DC628FC837BCE10D5D7F4FF478ED947BD75E7B6DB6FFEA8F7FFCE32C039D0BD4487FD61E7B0747AFF62AE35C70C105853E67BEA703FDF4D39FFEB4B1ECB2CBE6FABD3117CEF9408DE6DA74D34D677B4FBFE73DEF49DA97AE9B8F7CE42359CFE45D76D925BBFF0550C4565B6DD5F8C637BE91F5968AF371F4C18C5C89B9E39149175D7451A1F1A24F76953C8DB9F8B18E3C72347ACA3AC7A8A1AA98A7D649D1B12EBDF4D2529FC7D671FEF6B7BF35FEF297BF34FEF18F7F082BA0ABD82FAA5B2E6DBCF1C69533296FC5FEA8ADE21EBD738D6A578F3CF248D6CF35F6D94D31DECA2BAF5CEA7952BB3AFCF0C34B7D1E636F847EAE551FB8E7000CBFCF7DEE738DFDF6DBAFF1C52F7E31F7BA992AE7DFB7BEF5AD85C78B394045B3F4BBDFFD6EDBB1E27A2255FE5F73CD35D97351E7C27ADD1BBFF0C20B938C17FB0D75F2C637BEB1D0589FFFFCE74B7D16E33AA0DFE7F3E63137DA6823A10AC3A4F9B318EBBDFA7D3E7FDBDBDE9634933AD5228B2CD276ACB27B5B76CB43E7C27AD46DB7DDD6983C797263C68C1949C67BEF7BDFDBF13D1DBF3614DFCF8F38E2888E63A67AA6DE7C3FA35D9F456068DC72CB2DB33E8B37DE7863DFCFE75B6CB145E1F1621FAAA2591A7B6AB53369D2A464F91FD73FED7A7C2835F0ACBA93E8035364ACD8E7A08C6E7D6853DD276F1E33F6650386FFFB798A3932F1BDB85B2E451FABA2AEBAEAAA5279DAAE57ACF38C1ACAFAFDEF7F3FE83DF8C31FFEB0D45865BE4F9779265554AC3D7DDDEB5E97F58148B1A70350DE3BDFF9CE6C0E788ABD11F7DA6BAFE4EB6EAAE4E99FFFFCE7ACF756CC11707E51C355CF3EFB6CE3BEFBEEAB3446FCF9223AED5DF8F0C30F277F860ED4FBFB7EA78A3D2CF22A33174EA93A3FE3CF23E66A36FFB998EFDA6AE9A5976E6CBBEDB6420B18E49C73CEC99E276FB9E596D9FDB7107B297FF8C31F1ED45B3DBE6B749BFF1BCE3EFB6C19AE549B3AF6D863B3FEC8CD5658618541FB055F7CF1C582092824F619DD638F3DBAFE9EE8CDDE9A4BD3A64D6B7CF5AB5FCDE6D1ACB6DA6A8D091326348E3BEE3899ADE6E88AFD08E21E7D9531E273045044DC3F8FBDD1F338E59453E4B5521DEAA0830E1AF49DBBCC383187B488B88F76F3CD3737D659671D81067398B7BCE52DB3AD232BA24ADE9D78E289D95AB4A8E8A7E91CA0EA52EBADB75EDBCF4B999EEF717E2EEAAEBBEE9AF5E77FFBDBDF360E3CF0C0ACF77BAC7DBFECB2CB841ED440CC937DEEB9E7B27B804F3FFDF4A0EC38ECB0C30A8D77DA69A795CABBD85FB5D5273FF949E702352C357EFCF8EC739162ACE86393F21AB88C2F7CE10B1DC78B75EC29443FE8E88D17FBC076EAF904FCDF7DB398B71AFF8CBD503AED195EC4D7BEF6B5AED9117BAF14B1D9669B95CABCF8FFD5CECC99339365F41D77DC612F75D5B3629E478AFB4D0315F7BBBA897DD2F28EF5C20B2F94FA9CC7BDF64E63C6F7F514FAB1FE1D46827836167B81A7147B24377F6652F464FFCC673ED3353FE2BAA18877BCE31D49F78B8C3DDB5264EAA38F3E3AEBE7E29CA5F2F46B8BFD0F528CB7D0420B0DFBF7F3D5575FBDE37853A74E4D7E3EFFDEF7BEE724406DC47BFAFCF3CF4F3AE651471D55B91F5BAB7DF7DDB76B766CB0C10685C62BBB07F4BCF3CEDB76BCB2FDE35AEB89279E687CF0831FCCE6F63967A9A1ACE8B3DE49ACFF188AF3F9273EF189E463763B9FC77E765017319775EBADB74E3AE6D7BFFEF5E43D5C7BF5A78CFDCE8BD86DB7DD4A655EDCF74FF1DD45A99158DFFAD6B706BDB737DF7CF35263EDB8E38E853FE79DFAC90DD42B5FF9CA4A39B2D65A6B65E3C41C9CE79F7F5E7F3AE8A1DD5E8FAF7EF5AB2B8DF9EF7FFF3BE9F781EBAEBBAE74E6C5778866F62B5575ABF87CC4DA8D071F7C30C9FE7F7944EF875EE3C57D822ACACCB907FECFAEBBEE5AE973D4ED995A7345AF983C62EF8654FDB065BF52DDF7FFCB23F62D6AFE73F1DDF9D24B2FCD7ACBDD7EFBED7DD9331D187A2FBEF862EEF368AFFE70EE8D2B35F4B5F3CE3BB7FD2C464FE6E69ECA713F60C925976CFB7B274E9C98FD9EBBEFBE5B28C2283430CF2CBEE3B7BBA68F352CADD9F1C0030F343EFAD18FCEF6AC2DF650DC679F7D64AB52C358B17EE3C61B6FCCF67469FDB55B6EB9255726C43AF47BEFBD5738C22832B006BB97E869252B951AFA8A9E6DF1FC6A9E79E6C9F64F1BAA67ED575F7D75F66762AD5E2755E7CE01F9C4FAB3766BBF5EFBDAD7368E3CF2C8C29FF1D83BBD6A36FDED6F7F6BFCE73FFF91D34A955CDF36307FBC68C51CDAA25AFBD7C4DCF8B89F37B0C77BBBFD5981F49AF744993E7D7A63C68C19833EE3453F8F45FA57755B1F9F77FE9D52A3A9E25CF7F8E38F271BAF933FFEF18F85C7FAFCE73F5F3843CE38E38CAE63AEB4D24A95326AECD8B1497A5BC248123D8EE3FB6FAC438D5E27D1AF3CFA2C57D13A9FB55DBDFEF5AF2F34E6A449934ACD516F477F3655A76A7E36FDD8638F551EEF99679EE9F8398C8C283ADE0E3BEC5038433EF6B18F751D73D96597AD94514B2DB5D4A031B7D8620B270446B5D8BBA0F57D7DFCF1C7571E37757FA94D36D9A4708E9C7EFAE91DC7FBE73FFF99244B7FF5AB5F65E3C57FCBB9450D47C51CD101797A3954F97E1EF3D38B8E55E6FB41AFCFFB7BDFFBDE4AF91473EF5BC7DC73CF3D9366EBC0B8FBEDB79F130D1DDF1FB1A7472A6F7EF39B07BDAFF3EE353ED2CFE7DD9EDBDD73CF3D49726FA00786BD55D57056AAF378AFCF679EBE30ADF5E31FFFB8F0E73DD6BC741BB3EA3972C515571C34E699679E992C5737DE78E359E3C6DA1BE8748E9C366D5AB231DBF5543EE79C73FA7E3E2F7ABFBDDB5E8B6572C93940A9CE75E59557B6FDDCC47AB4A26345FF98A2CE3BEFBCAE63C6F57815DB6CB34DDF7AC887F9E69B2F7B3E1FF711165D7451272F0689399E975F7E79D6AF3195769F9B7FFDEB5F95C65C638D357A7EC68BCE878BF9E9657229E6C6BEE635AF996DAC58E32AB395EA5D3FFDE94FB3EFC25FFEF297DBCE6BCD5B1FFFF8C7937E1F888A678565C55E2D31C6ADB7DE9ACD99DD6BAFBD1A279E7862E355AF7A95130DA3FA3B7F3C4B8E1E10F7DF7F7FEEFD927B5D77A45C939A62FE5ACC8F8F3E15325AA9E1A9CD36DB2CD7E73DEFE734F62B2CE36D6F7B5BB64733CC09624D57EC4352C6565B6D95FBF33D73E6CCC6983163BA8E177BBDC842A5EAB3AE6EE595576EFB591F3F7EFCA079AAD12336F674FCD4A73ED5D87DF7DD07CD539932658AC0861CC68D1B57E8F7C7F577BB7376AFCF787C2663BE5B730F9AE84BD5DC7B462955AF8A6768D1836EEAD4A96D7F3D9EDB7512BDE39AAF11F278C52B5E21D499A3C59EE0BDF64F8BEFD8CDBDD64F3AE9A4417BA8C63DAE58DB25C794AA77C5357CD5F9F66F7FFBDB7B6653EBDAB94E7D6B62ADFA5FFEF297ECFB3F78C6FE52760DBDFFFEFB3736DA68A3ECBA39BE8B1F74D0418DBFFEF5AFB37DA636DD74D3AE63E5E935A3941A7D15F7D99AEFB195DD7BE14F7FFA53EE6CFAC8473ED2763EEF4D37DD345B36DD70C30D829C5A29BB6E62F2E4C9B93E87316F3C8F37BDE94D497A684C983021FBFF54666DBA522A5D7DF8C31F6EFB591FD843B148C51ADAA2DF377AD5061B6C503A37E3797FF4B98D7D29626EEECB5EF6B2C6861B6ED878F9CB5FEEA4425FC535F169A79DD638EEB8E3B28A7BDFBFF9CD6FB2F774BB3D52F2C83BC72DCEAF799D7FFEF9A5B3E35BDFFAD6A0F17AF587544ACD3ECF3C55BFF798E7D249F4A62A3A5ECCC72DE2673FFB59F2FE55CDDEF39EF7B41D33FE7D0A716D70C10517647BC55F7CF1C58DF9E79FDF896C943E9BFEC52F7E91FD1C633E79DC8BAE2AD679A67E4FB7EB21D7AE965B6EB9DC637EE0031F48DAE762B1C5164B9677D1CF2AD6EBD98F4DD5B106ECBDF7DE7DED2517626D77D1F18AEE9372ECB1C7F6F57C1EF382BBF586AC2AF6CC681E77892596487A9E8967A577DD755763E9A5974E7E0E8B671A975C7249F271639F80B8DE5C75D555938F1DE790E8475474BE772FB17EB2F9E718FB8956B5FEFAEB277F4FC77C923C9FC3227B1EC5F9B24C767CE8431F6A3B5ECC874F9577037B2B472F1AF9AFEA5691C1DFFCE637938DD7AD07CBB5D75E5B78BC38BF1511DF8786E3FB79F4F64AA1F567F1FEF7BF3FD93926B26C60DCB877DB8FB95529FBEA0DD871C71D7BEE0D5446F3FAE7D463A7DE6320C43E69A9DFD3EBAEBB6EAECFE176DB6D977BCCB8062F931DE79E7B6EDBF1B6DE7AEB64F9F4E4934F66CFE765BF52BDEBE9A79F6E7B4E8F352D65C6BBE8A28B0AE5539E35B155CE65B14F4B3FAE13063CFCF0C3B38DF9FDEF7F3FD939E6B0C30E9B35EE35D75C93F4FCF5AE77BD2BEB1F18F3A4538B390BD1AFEFD0430F4D3A6ECCF3E8477FDFC5175F7CD07BE3D4534FAD3CEE21871CD2F1BDB7E69A6B961A33E6B117D96B2CEFB386B2F9F1CB5FFEB231D75C73CD36DEFFFCCFFFC856A586793D793C2F8FFBF8679D7556A5B1F2DE1B7EC73BDE916BBCBBEFBEBB74A6C67E199DC68D1CAF62C105179CB5863EF2FF873FFC61E5DEF40CBDD87367E03D117B160FDCDBAD6AFAF4E9C9AE7B0714B9EF9CB74F6C8AFC88FEB4D1CB5E962A55BF7AE73BDFD933478A5CC7775A9F5EE4B960AC838B396BF1CF81EF165514DD978AD1A3C8F3E776E27E7DBCC7A23F62DC5F8AFBE4071F7CF06CEFC7A26BD6629D47D1CF613CFBE826D55EA54AA97A57F48189F5A8AD621E4D99F1264D9A54EA9968A7F578917503F36D20955813F9DDEF7EB7E3AFC79CED32CF0CAA7C16E3EF13FB00C77576ACC9C8330F5529A5CA56CC391F3B766C965DB13EFC88238E687B5F2FD691E799571CFDE36128C55C943C73E98E3FFEF8DC73E9638FD1767D1CA3D743CC775F7BEDB5B3BD066588526AB82BEEBB77126B9E3AF5A53DFDF4D3B37D5E623EEDCE3BEF9CF5EC88FDDAE3D7CBECDB0E55C47AF3638E3926F7EFFFFBDFFF3EDBF3F4B827DF3CB72CE69DC79AF8D6F7FE85175ED876BC33CF3C539E28A54A9F87538CD33A3FB6C83CE14E153D2D8A888CBCFAEAAB1BDB6EBB6DDB5F8F9EF47ACACDD962BDC18A2BAE98F50C8AFD8162FE443CD36EEED35044995EABBDD6393CFAE8A3B24929957B1E7CABF3CE3BAFF4789DD6B056797678E38D37967AE6D93C467CBF8F3EB1B15755DCB78FFB0155E7CE456FAF5665FB7ED2599C6F5BD7602EB5D452D9FD9B2AE27DD0ED7D17F78B8A6AFE8E5EB5FF5388FE8C293EE7CDCFB47EF0831FC83EA54640C51AB4DB6FBF3DD978D13FBAD55A6BAD557ABCBCFDDEA3A76ADE313FF399CF94CAEB6ED91AEBA9AB68DE23367A57C61ABCF8DF718F36852BAEB822DB677E9D75D6C9E60F543D77358BF98431972A2A7AA4B4BB2E2923F6E3897BC4B1063EFA80C71E223BEDB453E571A3A74FBB9FE1430F3D5469DC98ABDEED7DB7D75E7B151EF38B5FFC62EEF775BC3FFB3D6FAED33543CA4CFADDEF7ED7F8D18F7E249F952A50717FB0ECFDEA4EF5EE77BF7BD0673D6F4FE97615CFBEF338F0C003FBD6737640DC2BE834E697BFFCE54AE7824E7DBD8AEE5F9337C3639FBA54AAAE33E864FBEDB71F3476ECE551557CB7EC741E49FDF76DAEFDF6DBAFF098457AB3E5DD67B0CA3AF09FFCE4277D3F9FF7634CA5EA5E37DF7C7376FD9FB2CF439C575B75EAA99AA70E3FFCF05C1915DFE1FAB5274C9EE706471D75545FCEE755C7ED968DFD3A9F473FB114BEF4A52F0D1AFB80030EA83C6EA775DA79F710ED247AA8A67876D42CF64D4979BF3D5C7AE9A5A53F8FD1EFB0DFE7F3F8B937CFEF574A0D5FC5B3C866471F7D74E9B1E2DE731ED19B34EF983BECB043A9BC8EEFB49DC6BCE5965B2A9D0BE25E78957BA8BD9ECDB71B3BE65B55D5EE594AF4154821C6C9333FA3A8D6BE2DA97ABEC7B567EABD0606FACEE4ADD8EBA697E8E15CF57B40F33E819E9F2B55EF8A7DAEA2BF69AF394279EA1BDFF846D26782D103AEA83CBD67E799679ED2E782D883B3D3B80B2CB040A5F3CC2EBBECD276DCD82BA6AA2953A6F4EDBB7FBF5E8F471E79A4E3D831EFB1AC3CE7C9E8975C44996761DDD6592CB9E492C93EE3FFFEF7BF659D52AA7075BBEF5CA657C6DC73CF9DE4DC92EABB63B771FFF4A73F25392FC6F3D5C9932767BDE463FD5DECC55755CC218BF985316F222A9E6FC7D8D1E3BF8A817DE9629EE3F7BEF7BD6C1F9B582F58B50F6FAF7D84CACC410FF1BD38EF7B6FCC983149DF77ED2AFA2DB46AB7AF8C524A0D5745DE7EF6B39F6DECBAEBAED99CF2B2E3C477A9BC9E7DF6D9DCE39639D7DC7BEFBDB3E663B5CE275C6DB5D5B2BDB73BAD7BEFA5DB7EB723D9F8F1E33BFE5ADCF7A9726D13EB0C274E9C98ED0B147D0862CE59CC9FEF36A7B39BE67D5AF3569EFB00975D7659E5CF4BEC251A6BD2635F51F9A194AA73BF9B6ED9DDEE7968CC896BDD972ACE0D4F3DF5D46CCFBC636FB53C06D6A5C5FDFC6E621ED81A6BACD1A0BC98E3D06B2D5DF46F2B328FBEF57B79DC2B8A756BB1DEE184134EE8FABC299E83B4133D69E2BE87CFA8524ACD5E8F3FFE78E3AEBBEEEAFA7BE2F9F519679C91F5CFECB4CE3CD62D77D37ABF20EE0FC77921FA6B378BBDC5E31EF2C0EF8B5E6279C47AA7BC6BC1E6843E34F11C3DCE7DBD2CB2C822D9B3DEBCCF58067A01C439F5A31FFDE8A0E7D1B1474FAC4D6B3D572FB3CC326DC75B78E185B31E46DDE69AC4330AFB892AA554FB6AD72B3BFAB895192BEFDCB1DFFCE637C9E72337BBF6DA6BB3FBFF9DF6848BF5EA71EE2AA3D77CF7F9E69BAFD273EB6E62CD41AFBEBEED4C9D3A35BB9FBCE9A69BCE361F31AE91264C9830EB9EF5165B6C5168DC18B3C8CFB1D3B9BCD957BEF2954AEFE7430F3D34BB3688EBC3B8B6F319574A8DB48A67CEA79C724AD2313B9D9BE2B96CAA9E5855E7304D9F3E3DC9DCB9D6E7FB65E7A2C535C2C03DE3D34E3B2DDBCF2EFA09C45E9A31772E7A7F973570CF23CEBFD1F32DF6C68B7E46714F64E0594519B1F758EA9F5FDEF50C65D62AC6F7F032EFBF5817D8EF75DF4A2955A5A24768B3175E78A1F298DDE65295C9C0E8875BC4B469D3728D1BF775CBB8FEFAEBBB8E1B3D5DFB31CF7EDF7DF72D3DEE9E7BEED9B739FCD1A3A0DBD8D13F25F56B51B67F4EDCE328FAFEFBC73FFED171BC2ABD9A9AEB939FFCE4AC31D75C734DD9A454CD2BC47DCD7EF4766CBE5F5C65BC3C6BC68A8E197B551691B7B7CD2AABAC52EA3CD3EB5E469567E7299F0D348B7987DDC68EB96365F57AEE1CFD4ECAC8BBAE618F3DF6E8CB7542AF9E6C29BFA3378BE71E293FE3B17E23C49A5339AAD4C8A8F8DE77F2C927271DB3F59CB6E5965B561A2FCF5AA6A263C633F122CE3EFBEC4ACF04AA5E2F54D1EDFEC8861B6E587ADC581B96B2CF4AB39B6EBAA9EBD89D7A8EF79277AE45D1DEFD65D6617413D7B0553F87D187AE5FF7F1633E47BCD7AFBAEA2A39AA548D2BCE1FCDF398F2DEAB2EDB1F367AD1161DB3E873EE3BEEB823F7F55119BDF6956F5D4F3712EEB7C73AFA6E6357D9C3A5D7EB1CCFECFB79BF3DFAF3E4157BDB95795F77EBF996F2D957CC4738F6D863659352AAD2793DD558F17D2DF57CA4227D59F28E19EB948BDA68A38D92CDC56FB5ECB2CB56BAEFDBCD41071D94BC076FDED7A3CC3D8B58EB5FE4FB67EA7BF89DEE59977DB6A39452A3B9E23973CC8D8BB54B8B2EBA6876DFB5EC58B1D6388FA2FF8D7E7D672C23FAD3F51A37F637EFD777DD7E7E878EFE6F457BCF14F939469FA15ECE3FFFFCCAEFE958A716FBC99C74D249D91C429F73A5942A5EFFFCE73FB3F9C49DC43CE7A263C6BAADBCBD538A8C5B747FF39D76DA29F7D8E3C68D2B34F6EF7FFFFBE4EBBE42D1BD7EF2F6CC2DF25A34D78B2FBED8D871C71D078D173D65077ACF2BA5941A5915DFB5E2FCBDCF3EFB64DF957A3DD3AE72DFFDDBDFFE76AE6B8D76FF7EB3CD36EB79FE6A37C7F1B6DB6ECB7A9A757A0E92F73AA4DDF7DCF877F7DC734FDB71F3EC415EB6874054ECC1DAADA75CCA67C7F17CC2674529A5E6BC3AF2C8231BDB6CB34DF63D72FFFDF76F5C7EF9E53DD76CB77E57EEB48F7AF4978D71A32F49547C8FFCF9CF7F3EE8F7C57AC456F1BCA2D3DE3731C676DB6DD75879E595B31E69ABAEBA6AF6778835DFADBFB75DAFFCE8A71ECFCE5B7F6FF4526BEEB5BEFCF2CB676BD83B9D23CF3DF7DCC60A2BAC30DBFCBB76E33657ACE38FB508B1E75CCC99F31E544A29D5A9A2C75AEC39DDDC77EC924B2EA93CEEBAEBAEDBF13B66F4362D3366AF7EAB6F78C31B92F51968B5FAEAAB971E3BE68C77126BEC52FC1CE36716D70803EBB3635DA4F7B7524A8DBC8AEFC2B18E387AB6C577D1B27DDE9BAB751F9666B16767D971F3AC5B8F3D688A8C19DF87F388FB0145FFBEB1BF6D1EF1FDBAE8D8B12F7A2FD1F7BCCACF71A595566A3B6EEC279FE2BD17FD07630FF978EEE2B3A8949A93AAEC9A9F4E15F3B55A457F8D2A6346CFB26EE29E779971F39E77E3DAA4C8B88B2FBE78EE7968F10CBAC8D845F671C933C7BEB99AEF7DF4A387DA124B2CD171CCADB7DEBAF27BEFD39FFEF46C63C61EAA29DFDB29AE4B9552AA1FD53C7F38D598BBEEBAEBA0AC8E1E3755C68C3545DDCC3FFFFC7DB96F3DA0685FDE2276DB6DB7BE8D1DFB90F663EC32D78031E7A09B982B50E53DD2AEEF60ECC59AEA7DDD3CCF72C68C19F2432935A22AF6C01CF0C4134F241933E6A8A7EEBB75C82187743D178C1933A6F09877DF7D77EEF357D1BEB9457ABEC79CF97E9DCF63BFF87E8CFDD8638F259DA350759E7D54A77E7BA93E2BCDE35779BEA39452FDAAD8B3A5DDFCE9B2F5CC33CF0CCAD4E8995A65CC588FD54DCCDD2E3A66913E64C71D775CA1B13BEDC7D94E3CEB2D32F6D8B16393EF6553F47C5EE667F8852F7C21E97D8A3C7FFFE8B99AF2B3126B0D7EF6B39FC90DA5D41C53D1373EFA7E84D7BDEE7549F68E88E7AB9DC43D813263C65E96FD387F15D9DFECB2CB2E2B34F6269B6CD2B7F3EEFBDEF7BE9E63C67CB6B23FC36EF30A1E78E08124EFBDE82F10FF3F8ADE9B504A293574157DCB5B559DF3146BB1BB893E3065C66D5EEFDD49F4CD2D3A6EAFFDC1063CF4D043A5FEDE0B2FBC70D771ABF67539FDF4D307CDBB4BBDCFA0524AA9D15137DF7C73E39A6BAE49365EF4A78B3D489BBDEB5DEFAA3CA7E080030E28BD5F4BAFDA6AABAD3A8E5D755FBD2953A60C7A66B0E0820B666BC152FE1C1F79E411EF67A59452A362FDDEC0F542CCA7DA61871D1A071E7860E3D65B6F4DBAD6FFF8E38FCFAAE8DA37A594524A29A594524A29A59452AA48C57AE1E79E7B2EF97DF9DD77DF3DEB431EF7D2538E1DEBE3E2F978CCF54BFDF78EF9DF1B6CB04163E79D774EFE3A979D83A79452AA1E75E79D7766CF7F639FF194E3C67E5FCD52CDA18B3D5D53CFB3EFB6CEFEF9E79FAF3CF6BDF7DE3B68DC58AF97EAB56EDE23C77B5A29A54676C5BAEAD4DF45EFBFFFFED9CE31D1E725C5B87FFEF39F079DBFD658638DCAE3C69CB3761658608164E7C456D18BA55F63A73C970FD87CF3CD937EE77FFDEB5FDF987BEEB9FBD267357ABEFB6C2BA5E6B44ADD43332AF65F6BD66E1FF132D5AEEF4AECA55675DC767B9A8785165AA8F23D8A4E62AFF5AAF7D8FB753E8FDE82FDECB3FAA52F7D69D698A9F74C1BE8FB73CC31C7F87C2BA5E6A88A5E97175D7451DFAE13529E072EBCF0C2CAFBAAB4AB4EBDE4A33F79BFBE434F9A34A92FF71416596491BE7C3F4F7DCF3D7A0DC69EEE4F3FFD74F2F7DE59679DE5B3AD945209AB6ADFB14EE7B137BEF18DD93926FA9EBFF8E28B49C68DEFCBAD1E7CF0C1CAE3469F9C54FB9FB4D6E4C993078D1B6BD753BC1ED1B36E9D75D6C9EE51F4639E9D524A29D5AF8AE7BA319760CF3DF74CB6375DD4F4E9D3B3FDDC622F91A38F3E3AF9DF3BEE8F9F7AEAA98DA79E7ACACF5129A594524A29A594524A29A594524A29A594524A29A594524A29A594524A2935C757CAF561CDF5E8A38F36D65E7BEDBE8C1D7DCE3EF5A94F251FF78E3BEE684C9C38B13165CA94E4639F7CF2C98DC30F3FBC2FAFC77DF7DDE7BDAC9452737885F1E3C7F765DCB0DE7AEB251D37D6A90F487D7EEC476FBDA8DB6EBB6DD6B8E79C734ED2B16FBCF1C66CDCD47B0128A5941A5DB5D75E7B25EB6DD65C03BD5CAFB8E28AA4E3C61E33A9F7781BA8030E38201B77C925974CFE7A8C1B372EC93E33ED2AF6834DD1534F29A594AA4BCD9C39D3EBA094524A29A594524A29A594524A29A594524A29A594524A29A594524A29A594524A29A594524A29A594524A29A594524A29A594524AA939B6FE1FDB78788C]
FillColor=16777215
Point(Height)
Point(Width)
}
Add(Img_Rotate,10798149,518,399)
{
Angle=0
BackgroundColor=0
link(onResult,8028185:doLoad,[])
link(Bitmap,15635229:Bitmap,[])
}
Add(CounterEx,9911111,455,399)
{
Max=359
Point(onThroughMax)
Point(onThroughMin)
Point(doPrev)
Point(doStep)
Point(doMax)
link(onNext,10798149:doRotate,[])
}
Add(MainForm,12061819,399,336)
{
@Hint=#8:3.3.2023|
Width=500
Height=499
Color=0
Ctl3D=0
Caption="Img"
BorderStyle=0
DragForm=0
Position=1
Point(Handle)
link(onCreate,8023775:doTransparentColor,[])
}
Add(Timer,4020990,399,399)
{
Interval=33
Point(doInterval)
link(onTimer,9911111:doNext,[])
}
Add(Image,8028185,581,399)
{
Width=500
Height=499
Align=5
Color=0
ViewStyle=0
Point(Handle)
}
Add(WinTools,8023775,455,322)
{
Point(doTransparentColor)
link(Handle,12061819:Handle,[(461,313)(447,313)(447,376)(405,376)])
}


А если вот так.
карма: 1

2
Голосовали:Gunta, sla8a
Ответов: 698
Рейтинг: 143
#4: 2023-03-17 14:11:08 ЛС | профиль | цитата
Flapiotun писал(а):
А если вот так.

Да, наверное это самый простой и надёжный способ.
Чуть дополнил. Для закрытия нажать "ESC".
https://forum.hiasm.com/getfile/39582

--- Добавлено в 2023-03-17 14:16:01



Редактировалось 2 раз(а), последний 2023-03-17 14:16:01
карма: 15

1
файлы: 1form_rotations 2.zip [30.6KB] [159]
Голосовали:Flapiotun
Ответов: 2200
Рейтинг: 673
#5: 2023-03-17 16:54:58 ЛС | профиль | цитата
Думаю что рисовать "дешевле" все же:
Add(CounterEx,9911111,455,301)
{
Max=359
Point(onThroughMax)
Point(onThroughMin)
Point(doPrev)
Point(doStep)
Point(doMax)
link(onNext,12465343:doRefresh,[])
}
Add(MainForm,12061819,497,175)
{
@Hint=#8:3.3.2023|
Width=500
Height=499
Color=16777215
Ctl3D=0
Caption="Img"
BorderStyle=0
DragForm=0
Point(Handle)
Point(onKeyDown)
link(onCreate,11240625:doColor,[])
link(onKeyDown,3448284:doCase,[(536,202)(536,167)(431,167)(431,195)])
}
Add(Timer,4020990,413,301)
{
Interval=33
Point(doInterval)
link(onTimer,9911111:doNext,[])
}
Add(WinTools,8023775,595,161)
{
Point(doTransparentColor)
link(Handle,9629725:Var2,[])
}
Add(Bitmap,359550,553,245)
{
@Hint=#18:Вставить картинку!|
FillColor=16777215
AddHint(-141,10,114,13,@Hint)
}
Add(SelectColor,11240625,553,189)
{
Color=16777215
link(onColor,8023775:doTransparentColor,[])
}
Add(MoveWindow,945688,630,336)
{
link(Handle,9629725:Var3,[(636,152)])
}
Add(GetDataEx,9629725,595,147)
{
Angle=3
link(Data,12061819:Handle,[(546,152)(546,217)(503,217)])
}
Add(Case,3448284,455,189)
{
Value=Integer(27)
link(onTrue,12061819:doClose,[])
}
Add(PaintBox,12465343,497,301)
{
Left=615
Top=245
Align=5
Color=16777215
ClearBeforeDraw=0
Point(onMouseDown)
link(onBeforeDraw,4757424:doDraw,[])
link(onMouseDown,945688:doMove,[(540,314)(540,342)])
}
Add(Img_Bmp,4757424,546,301)
{
Point(Transform)
link(Bitmap,12465343:Bitmap,[(552,290)(535,290)(535,345)(503,345)])
link(SourceBitmap,359550:Bitmap,[])
link(Transform,3452604:Transform,[(566,293)(594,293)])
}
Add(Img_UseRotate,3452604,588,245)
{
link(Angle,9911111:Count,[(601,235)(403,235)(403,345)(461,345)])
}

Редактировалось 1 раз(а), последний 2023-03-17 16:56:45
карма: 11

0
Ответов: 1263
Рейтинг: 47
#6: 2023-03-18 00:39:19 ЛС | профиль | цитата
Gunta, Flapiotun, sla8a, спасибо огромное! Не додумался бы что форму можно менять без точки doPicture с помощью WinTools. Хотя его часто использовал для режима "поплавка" формы. Интересно, почему они по разному работают.
sla8a, да, я пытаюсь освоить эти элементы рисования, что-то получается. Думаю теперь как с их помощью нарисовать зеркальные отражения в калейдоскопе. В 1 версии, я просто рандомно наваленные точки вращал и копировал симметрично. Потом понял что это не совсем похоже на отражения в классическом калейдоскопе, где они множественные.

Редактировалось 1 раз(а), последний 2023-03-18 11:23:20
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 8888
Рейтинг: 823
#7: 2023-03-18 09:41:17 ЛС | профиль | цитата
Aziz, "в классическом калейдоскопе" поле зрения не ограничено ничем, в т.ч. и окружностью. Попробуйте GL.
карма: 19

0
Ответов: 2200
Рейтинг: 673
#8: 2023-03-18 10:22:24 ЛС | профиль | цитата
Aziz писал(а):
рандомно наваленные точки вращал
А разве в реальном калейдоскопе они берутся из неоткуда? В калейдоскопе определенное количество объектов. Думаю что нужно создать рандомнымные многоугольники (Img_Polygon), задать им свои цвета, в идеале подготовить красочные заливки (ParrentStyle = true). И только потом уже рандомно их раскидывать и вращать.
Леонид писал(а):
Попробуйте GL.
Леонид, прав в openGL можно получить действительно красивый калейдоскоп, на GDI не так красиво получиться.
карма: 11

0
Ответов: 1263
Рейтинг: 47
#9: 2023-03-18 11:18:56 ЛС | профиль | цитата
Леонид, так то да, когда смотришь, но на практике все же это прибор круглой формы и поле зрения круглое.. Фулскрин по любому будет.

sla8a, да, я это учел. Ввел ограничитель на число точек и их цвета. И при вращении и смене позиции выключал старую красную точку, рисуя по ее старым координатам черную точку и рисуя новую красную по новым координатам. openGL показалось сложноватым в плане преобразований и отражений. Но может я ошибаюсь, там этот функционал более развит, надо глянуть, спасибо. В дальнейших планах этот калейдоскоп прикрутить к своему генератору мелодий, чтобы тот по его паттернам такое же что-то красивое выдавал. 12 цветов - 12 нот.. Чистый рандом без повторов в музыке звучит мерзко) И тут я вспомнил про калейдоскоп, где из рандома что-то красивое получается. Также со временем хочу рисованные точки или многоугольники заменить фото реальных стекляшек, как в настоящем калейдоскопе, чтобы они рандомно и независимо крутились вокруг оси (тут уже без 3Д моделей и openGL не обойтись), с меняющимся числом зеркал. Можно конечно, стекляшки сложной формы генерить программно. Что я и сделал, пытаясь в новой версии вместо точек многоугольники использовать.
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 8888
Рейтинг: 823
#10: 2023-03-20 18:11:52 ЛС | профиль | цитата
Aziz, пара примеров с калейдоскопом квадратной формы (когда-то рисовал сколько кружочков колбасы можно увидеть в холодильнике с зеркальными стенками )
https://forum.hiasm.com/getfile/39584
карма: 19

0
Ответов: 2200
Рейтинг: 673
#11: 2023-03-20 20:45:44 ЛС | профиль | цитата
Леонид,
flood
ну шарики раскрутили понятно, а Альберта то за что?
карма: 11

0
Ответов: 8888
Рейтинг: 823
#12: 2023-03-20 21:04:21 ЛС | профиль | цитата
sla8a, случайно попался, по подходящему размеру
карма: 19

0
Ответов: 1263
Рейтинг: 47
#13: 2023-03-24 03:47:01 ЛС | профиль | цитата
Леонид, спасибо большое! Очень пригодится..

--- Добавлено в 2023-03-24 03:57:57

Леонид, а вот что у меня пока получилось, простите за запутанность схемы, так и не научился все рисовать аккуратно, гонясь за Содержанием (функционалом), упускаю Форму.. Или это у меня встроенный в мозг постковидный обфускатор кода работает)) Хоть какая-то польза от вируса)
Меню и авторотация по ПКМ. 2-й клик очищает. Также увеличивается при нажатии колесика. Назначение параметров - во всплывающих подсказках. Из главных проблем схемы что я не смог побороть - если сделать число отражений Mirrors большим (20-30) то появляется некрасивый артефакт, от которого я так и не смог избавиться. Причем он начинает появляться уже при числе зеркал больше 5, но слабо заметен - просто не все точки отражаются корректно. Я так понял, это новые точки перерисовывают старые, поэтому идет разрушение симметрии узора. Может кто сможет исправить?
Еще хотел чтобы сделать инерционную авторотацию в ту сторону, куда крутнул в последний раз, это пока работает если выключить ротацию, крутнуть куда нужно и снова ее включить. А чтобы автоматизировать это нужно чтобы компонент MoveWindow не перехватывал события onMouseUP с помощью которого хотел снова запускать таймер вращения. Об этом спросил в другой теме.

Редактировалось 9 раз(а), последний 2023-03-24 04:27:51
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
файлы: 1Калейдоскоп 1.9.5.zip [200.5KB] [141]
Ответов: 698
Рейтинг: 143
#14: 2023-05-31 12:49:01 ЛС | профиль | цитата
Aziz писал(а):
Делаю калейдоскоп

Это конечно не калейдоскоп, но эффект очень завораживающий.
https://forum.hiasm.com/getfile/39612

Редактировалось 1 раз(а), последний 2023-05-31 12:54:19
карма: 15

0
Ответов: 8888
Рейтинг: 823
#15: 2023-05-31 14:44:53 ЛС | профиль | цитата
Gunta, не помню, выкладывал-ли здесь, а для любителей астрономии делал пример (не соответствующий действительности)
https://disk.yandex.ru/d/L07OB6JKbV5sWg
карма: 19

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)