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

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

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

Ответить
user6745
новенький
Сообщения: 13
Зарегистрирован: 15.01.2021 19:05:25

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

Сообщение user6745 »

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

Код: Выделить всё

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?
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

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

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

Ещё можно перед вызовом SetShape вызывать CreateHandle, если использование FormCreate обязательно
user6745
новенький
Сообщения: 13
Зарегистрирован: 15.01.2021 19:05:25

Сообщение user6745 »

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

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

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


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

Сообщение user6745 »

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

Как сделать чтобы края были скругленные по контуру картинки при изменении масштаба экрана?
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

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

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

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

проблема смахивает на некие особенности винды.
Если у тебя приложение DPI-Aware (судя по всему это так), тогда скорее всего поможет переназначение "трафаретной" картинки с должными размерами.
user6745
новенький
Сообщения: 13
Зарегистрирован: 15.01.2021 19:05:25

Сообщение user6745 »

Оставлю стандартное видовое с прямыми углами. Чтобы без лишних заморочек.))
Ответить