Преместете изображения във формата с мишката
Преместете изображения във формата с мишката
Материално съдържание
И така, полученият код ви позволява да поставите n изображения във формуляра и да ги преместите с мишката. Можете да бъдете доволни от решението, ако не и за един ужасен проблем - трептене.
Не съм голям магьосник на DELPHI и не знам общ начин да победя трептенето. Като цяло имах чувството, че трептенето не може да бъде избегнато при преместване на изображението около формата. Ще бъда благодарен на някой, който покаже обратното. Е, като цяло, използването на известни методи, например
MainForm.ControlStyle := MainForm.ControlStyle + [csOpaque];
или процедурите Invalidate не ми помогнаха.
Следващата ми стъпка беше да посетя Delphi Masters, където прочетох статията на Михаил Кристосенко „Преместване на изображение около форма, докато програмата се изпълнява“. Приложение на метода
(Подател като TImage).SetBounds((Подател като TImage).Left + x - x0, (Подател като
TImage).Top + y - y0, (Подател като TImage).width, (Подател като TImage).height);
в процедурата Image1MouseMove, както препоръчва Михаил, трептенето беше намалено, но не се отърве от него. Освен това в програмите за възрастни, като самия DELPHI, се използва третият метод, описан от Михаил - преместване не на изображението, а на неговата рамка.
Тогава се чудех дали използването на TImage за преместване на изображение около формуляр е задънена улица. И тогава разбрах, че знам компонент, върху който можете да поставите изображение и който не трепти "по дефиниция". Този компонент (нека Delphi Masters ме прости) е форма.
Така че следващият проект се състои от две форми - FormMain и ImageForm. Празно Image1 се поставя върху ImageForm, заемайки цялата клиентска област на ImageForm. ImageForm се отнася до Налични форми - това действие не е от съществено значение, носпестява около 100 kb памет по време на стартиране на приложението. Задайте свойството BorderStyle на ImageForm на bsNone.
За да може ImageForm да се премести зад Image1, създаваме следната процедура: