Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.14;
Скачать: CL | DM;

Вниз

Ошибка в 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 вся ветка

Текущий архив: 2005.08.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
3-1120564635
alex_***
2005-07-05 15:57
2005.08.14
получить результат выполнения dynamic sql кроме кода ошибки


4-1118826576
_Вован
2005-06-15 13:09
2005.08.14
Как перекодировать String в DOS-кодировку ?


3-1120461930
Draught
2005-07-04 11:25
2005.08.14
suser_id()


4-1119447130
alkmas
2005-06-22 17:32
2005.08.14
Установка переменной окружения в родительском процессе


5-1092994745
sirin
2004-08-20 13:39
2005.08.14
expert