Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
14-1121760989
kaif
2005-07-19 12:16
2005.08.14
СПАМ


3-1120498485
Skull
2005-07-04 21:34
2005.08.14
Проблема запуска проги CBuilder6.0 + Access на CD


1-1122376796
MiSt
2005-07-26 15:19
2005.08.14
отображать eml файл при помощи Outlook


4-1118679326
ATarget
2005-06-13 20:15
2005.08.14
драйвер


6-1112417763
Evgenius
2005-04-02 08:56
2005.08.14
Програмная генерация события в TwebBrowser





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский