Как получить изображение с TCustomControl в TBitmap?
Вот есть, например, TButton. Он определенного цвета, на нем что-то написано и т.д.. Как получить скан-изображение с него, и поместить это изображение в TBitmap?
Получить изображение с TCustomControl
Модератор: Модераторы
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Метод TWinControl.PaintTo позволяет нарисовать его на любом TCanvas.
Получаю External: SIGSEGV
ЧТо не так?...
Добавлено спустя 28 минут 55 секунд:
Похоже PainTo можно использовать только после некоторого события. Я получаю ошибку, так как пытаюсь вызвать метод когда контрол еще не отрисован на своём паренте. При этом свойство Visible = true уже. Как можно определить, что PaintTo уже можно вызывать безболезненно?
Код: Выделить всё
if (cnt is TWinControl) then begin
btm:= TBitmap.Create;
btm.SetSize(cnt.ClientWidth, cnt.ClientHeight);
TWinControl(cnt).PaintTo(btm.Canvas, 0, 0); //External: SIGSEGV
btm.SaveToFile(ParamStr(0)+'.bmp');
FreeAndNil(btm);
end;
ЧТо не так?...
Добавлено спустя 28 минут 55 секунд:
Похоже PainTo можно использовать только после некоторого события. Я получаю ошибку, так как пытаюсь вызвать метод когда контрол еще не отрисован на своём паренте. При этом свойство Visible = true уже. Как можно определить, что PaintTo уже можно вызывать безболезненно?
А если
?
Код: Выделить всё
if (cnt is TWinControl) then begin
btm:= TBitmap.Create;
btm.SetSize(cnt.Width, cnt.Height);
TWinControl(cnt).PaintTo(btm.Canvas, 0, 0);
btm.SaveToFile(ParamStr(0)+'.bmp');
FreeAndNil(btm);
end;
тоже самое. И я уже понимаю, что проблема в самом TBitmap. Так как на канву формы рисует без ошибок. Но в чем проблема? Может сам TBitmap.Canvas надо как-то подготовить?...
Добавлено спустя 13 часов 56 минут 38 секунд:
TBitmap.Canvas является ReadOnly в этом и проблема.
Тогда вопрос: как копировать изображение TCustomControl в TBitmap?
Добавлено спустя 13 часов 56 минут 38 секунд:
TBitmap.Canvas является ReadOnly в этом и проблема.
Тогда вопрос: как копировать изображение TCustomControl в TBitmap?
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
VirtUX, попробуй воспользоваться функциями самого канваса, типа Draw
VirtUX, нужен минимальный пример в котором эта ошибка воспроизводится.
У меня вышеупомянутая процедура работает без вопросов.
У меня вышеупомянутая процедура работает без вопросов.
