Форум: "KOL";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
ВнизОшибка в PBitMap Найти похожие ветки
← →
Boris Mouradov (2005-01-11 11:38) [0]KOL 2.00
Вот такая конструкция работает:
i := Bitmap.Canvas.TextHeight("Wg");
Bitmap.Canvas.TextOut(...)
А вот такая - нет:
Canvas := Bitmap.Canvas;
i := Canvas.TextHeight("Wg");
Canvas.TextOut(...)
А все потому, что в функции TextExtent г.Герасимовым добавлена строка, сбрасывающая Handle. После комментирования его строки все заработало. Исправьте, пожалуйста, ситуацию.
Спасибо.
← →
SPeller © (2005-01-11 12:59) [1]Гыг, опять вылез этот канвас :) Надо с ним что-то сделать. Мож достать тов. Герасимова чтоб он придумал что-то другое? Или же пусть Владимир сам изменит? Но вручную каждый раз писать PCCanvas(C).fIsPaintDC := True как-то обламывает. Уж если это системная фича, то пусть этот конфликт и решается самостоятельно внутри kol.pas, а не руками программиста.
← →
<Falcon> (2005-01-11 14:55) [2]Владимир говорит, что у него таких проблем нет. Я отсылал ему пример, у меня эта беда вылазит прии спользовании mdvXLGrid. Но он ответил, что такое не годится, у него и компонет этот не скачан. Это конечно справедливо, но.. Отошлите ему пример с битмапом! Он говорил, что посмотрит если будет явно виден глюк и пример без дополнительных компонентов будет.
А коментить строку Герасимова, возможно не есть хорошо, поскольку может приводить к потере GDI ресурсов. Обсуждали уже это. Это только следствие устраняет - не причину.
← →
miek © (2005-01-11 19:02) [3]Вообще давно пора забить на TBitmap. Лично меня его глюки достали уже давно.
← →
Boris Mouradov (2005-01-11 20:50) [4]Пример? Пожалуйста!
procedure TMainForm.PaintBox1Paint(Sender: PControl; DC: HDC);
var bm: PBitMap;
Canvas: PCanvas;
begin
bm := NewBitMap(100, 100);
bm.PixelFormat := pf24bit;
bm.Canvas.Font.Color := clRed;
bm.Canvas.TextHeight("Wg");
bm.Canvas.TextOut(0, 0, "Wg");
Canvas := bm.Canvas;
bm.Canvas.Font.Color := clLime;
Canvas.TextHeight("Wg");
// bm.Canvas;
Canvas.TextOut(0, 20, "Wg");
bm.Draw(PaintBox1.Canvas.Handle, 0, 0);
end;
Скомпилированный пример и исходники берите здесь: www.alar-2.ru/Boris/Test.rar (24К)
Первый красный слог пишется нормально, второй зеленый - нет.
Попробуйте раскомментировать строку (см. test2.exe) - и всё будет Ок. Беда в том, что в функции есть доступ к Canvas, но нет доступа к BitMap, поэтому и пришлось лезть в исходники.
Потеря GDI это плохо, согласен, но что делать, если программа иначе не работает? Помогите исправить глюк.
А как забить на BitMap? Где рисовать картинки? Как их сохранять? Да и не в битмапе дело, а в Canvas.
← →
miek © (2005-01-11 21:12) [5]>А как забить на BitMap? Где рисовать картинки? Как их сохранять? Да и не в битмапе дело, а в Canvas.
Использовать альтернативные библиотеки, особенно мою:)
А дело - именно в канве, ибо нечего наворачивать ООП на простые объекты...
← →
<Falcon> (2005-01-12 13:20) [6]
> Пример? Пожалуйста!
Так лучше Владимиру на мыло отправьте. Вместе с примером. Может быть тут не заметит.
← →
Boris Mouradov (2005-01-12 14:08) [7]
> Так лучше Владимиру на мыло отправьте.
Какому Владимиру? И на какой адрес?
← →
<Falcon> (2005-01-12 18:19) [8]
> Какому Владимиру? И на какой адрес?
Владимиру Кладову. Адрес посмотрите на bonanzas.rinet.ru я не помню.
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c