Skip to main content

Как заставит Delphi не перерисовывать форму

Аватар пользователя Shader
Не в сети
Студент
Зарегистрирован: 15.10.2005
Сообщения: 706
Баллы: 729
Как заставит Delphi не перерисовывать форму

Как заставит Delphi не перерисовывать форму?
Задача такая:
Окно имеет нестандартную форму (например круг, получен через SetWindowRgn), при его пермещении остаётся "чёрнй след" на несколько милисекунд. Так вот как от него избавиться?

Аватар пользователя SARS
Не в сети
Новенький
Зарегистрирован: 22.12.2005
Сообщения: 72
Баллы: 72
Как заставит Delphi не перерисовывать

"Shader" пишет:

Как заставит Delphi не перерисовывать форму?
Задача такая:
Окно имеет нестандартную форму (например круг, получен через SetWindowRgn), при его пермещении остаётся "чёрнй след" на несколько милисекунд. Так вот как от него избавиться?

Не понял в чем проблема :unsure:

Все работает: SetWindowRgn(Handle, CreateEllipticRgn(10, 10, 100, 100), true);

Аватар пользователя Shader
Не в сети
Студент
Зарегистрирован: 15.10.2005
Сообщения: 706
Баллы: 729
Как заставит Delphi не перерисовывать

"SARS" пишет:

Не понял в чем проблема :unsure:
Все работает: SetWindowRgn(Handle, CreateEllipticRgn(10, 10, 100, 100), true);

А ты сделай так:
1) Из большого Квадрата вырежи малый - получи рамку, это будет форма у тебя

procedure TFoto.RebuildWindowRgn;<br />
var<br />
  FullRgn, Rgn: THandle;<br />
begin<br />
  FullRgn:=CreateRectRgn(0,0,Width,Height);<br />
  Rgn:=CreateRectRgn(3,128,707,535);<br />
  CombineRgn(FullRgn,FullRgn,Rgn,RGN_DIFF);<br />
  SetWindowRgn(Handle,FullRgn,true);<br />
end;

2) Сверху на форму поставь image с картинкой (jpg и высоко детализированную)
И поперемещай форму...

Так что жду ответа (Как заставит навремя не перерисовываться форму)...

Аватар пользователя SARS
Не в сети
Новенький
Зарегистрирован: 22.12.2005
Сообщения: 72
Баллы: 72
Как заставит Delphi не перерисовывать

Тебя смущает небольшой шлейф за формой?
Если да, это можно исправить, если разгрузить метод перересовки окна:
1. Либо использовать менее качественную картинку в Image.
2. Пробовать самому выводить изображение на форму, т.е. выводить только отображаемые части.

Аватар пользователя забыл_пароль
Не в сети
Гражданин
Зарегистрирован: 29.10.2005
Сообщения: 1414
Баллы: 1427
Как заставит Delphi не перерисовывать

"Shader" пишет:

...
Как заставит навремя не перерисовываться форму
...

Сделай лучше так, чтобы во время перетаскивания картинка становится невидимой...

Кстати, ответ на вопрос про грани куба помог? Или ты придумал свой выход?

Аватар пользователя Shader
Не в сети
Студент
Зарегистрирован: 15.10.2005
Сообщения: 706
Баллы: 729
Как заставит Delphi не перерисовывать

"забыл_пароль" пишет:

Сделай лучше так, чтобы во время перетаскивания картинка становится невидимой...

Делать невидимой картинку пробывал - не помогло (да и в той задаче что я преследую этого делать нельзя)

"забыл_пароль" пишет:

Кстати, ответ на вопрос про грани куба помог? Или ты придумал свой выход?

Нет - так как линии могут быть широкими или иметь угол очень близкий к 0 или к 90...

Выход пока только такой : Заставить пользователя самому счёлкать по углам (которых аш 4 штуки), затем он выбирает с которой из 3 возможных граней он будет работать (так как узнать по 4 указанным точкам какая именно это грань я пока не придумал) затем выносятся размеры куба...

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".