Контур формы по картинке

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Контур формы по картинке

Сообщение user6745 » 15.03.2021 19:19:34

Задаем нажатием кнопки форму по белому цвету картинки

Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
var
  ABitmap: TBitmap;
begin
  // Скрыть заголовок окна
  BorderStyle:= bsNone;
  ABitmap:= TBitmap.Create;
  // Загружаем картинку
  ABitmap.LoadFromFile('1.bmp');
  ABitmap.Monochrome:=True;
  SetShape(ABitmap);

  ABitmap.Free;
end;


Если я помещаю этот код в обработчик нажатия кнопки, то он срабатывает. А если помещаю в FormCreate, то не срабатывает. Как сделать чтобы он срабатывал в FormCreate?
user6745
новенький
 
Сообщения: 13
Зарегистрирован: 15.01.2021 20:05:25

Re: Контур формы по картинке

Сообщение скалогрыз » 16.03.2021 00:07:08

user6745 писал(а):Как сделать чтобы он срабатывал в FormCreate?

он не срабатывает, потому что у формы ещё не создан Handle
вместо FormCreate используй FormShow

Ещё можно перед вызовом SetShape вызывать CreateHandle, если использование FormCreate обязательно
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Контур формы по картинке

Сообщение user6745 » 16.03.2021 19:02:10

скалогрыз писал(а):
user6745 писал(а):Как сделать чтобы он срабатывал в FormCreate?

он не срабатывает, потому что у формы ещё не создан Handle
вместо FormCreate используй FormShow

Ещё можно перед вызовом SetShape вызывать CreateHandle, если использование FormCreate обязательно


Спасибо, помогло. Теперь использую FormShow.
user6745
новенький
 
Сообщения: 13
Зарегистрирован: 15.01.2021 20:05:25

Re: Контур формы по картинке

Сообщение user6745 » 11.04.2021 15:11:10

По картинке задал скругленные края формы и все вроде бы хорошо было. Но до тех пор пока масштаб экрана в wondows 10 не поменял. Собрал программу на масштабе 125%. Отображается нормально со скругленными краями.
Поменял масштаб на 100% показывает края формы прямые. На 150% то же прямые не скругленные. Ставлю обратно 125% снова скругленные показывает.

Как сделать чтобы края были скругленные по контуру картинки при изменении масштаба экрана?
user6745
новенький
 
Сообщения: 13
Зарегистрирован: 15.01.2021 20:05:25

Re: Контур формы по картинке

Сообщение скалогрыз » 11.04.2021 20:35:14

user6745 писал(а):Но до тех пор пока масштаб экрана в wondows 10 не поменял. Собрал программу на масштабе 125%. Отображается нормально со скругленными краями.
Поменял масштаб на 100% показывает края формы прямые. На 150% то же прямые не скругленные. Ставлю обратно 125% снова скругленные показывает

приложил бы скриншоты что ли, нам же всем интересно!

user6745 писал(а):Как сделать чтобы края были скругленные по контуру картинки при изменении масштаба экрана?

проблема смахивает на некие особенности винды.
Если у тебя приложение DPI-Aware (судя по всему это так), тогда скорее всего поможет переназначение "трафаретной" картинки с должными размерами.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Контур формы по картинке

Сообщение user6745 » 12.04.2021 13:47:15

Оставлю стандартное видовое с прямыми углами. Чтобы без лишних заморочек.))
user6745
новенький
 
Сообщения: 13
Зарегистрирован: 15.01.2021 20:05:25


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 40

Рейтинг@Mail.ru