Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.10.20;
Скачать: [xml.tar.bz2];

Вниз

Цвет Brush   Найти похожие ветки 

 
REA   (2003-10-08 16:04) [0]

Что за мистика? - конструкция
Canvas.Brush.Color := $00B9FAFF; вызывает утечку ресурсов, а
Canvas.Brush.Color := clRed; не вызывает


(Delphi 7)


 
Skier   (2003-10-08 16:07) [1]


> Canvas.Brush.Color := $00B9FAFF; вызывает утечку ресурсов,
>

Доказательства !


 
dima_shapkin   (2003-10-08 16:10) [2]

В каком смысле?


 
REA   (2003-10-08 16:14) [3]

Вообще-то полный код привести проблематично - там есть и регионы и клиппование и SetViewPortOrg и Canvas этот от TBitmap, но сам факт?
Придется что ли программу упрощать до ошибки в чистом виде.
Причем самой этой кистью потом ничего не рисуется (закомментировал).


 
Skier   (2003-10-08 16:17) [4]

>REA © (08.10.03 16:14) [3]
Ошибка точно не там где ты её ищешь...


 
REA   (2003-10-08 16:23) [5]

Сейчас попробую эту конструкцию наверх поднять, чтобы устранить побочные эффекты, но то что это та конструкция я почти уверен, хотя сама причина конечно может быть и в другом.


 
REA   (2003-10-08 17:26) [6]

Проблема оказалась совсем в другом месте уже после смены цвета в коде:
DC := SaveDC(Handle);
Try
SelectClipRgn(Handle, 0); // Do not clip
SetViewportOrgEx(Handle, 0, 0, Nil); // Draw in window space
Pen.Style := psSolid;
Pen.Width := 1;
Pen.Color := clNavy;
Brush.Color := $00F0A088;
Brush.Style := bsSolid;
Font.Color := clNavy;
Font.Name := "Arial";
Font.Size := 8;
Font.Style := [fsBold];
SetTextAlign(Handle, TA_CENTER Or TA_TOP);
For i := 0 To 9 Do
If Not IsNAN(FBookmarks[i]) Then
Begin
VPos := Field.PrjVertValueToMM(FBookmarks[i]);
pt := TScreenDevice(Device).AbsPrj(0, VPos);
Ellipse(pt.X-17, pt.Y, pt.X, pt.Y+17);
SetBkMode(Handle, TRANSPARENT);
TextOut(pt.X-8, pt.Y+2, IntToStr(i));
End;
Finally
RestoreDC(Handle, DC);
End;

Каким образом оно повлияло на этот код непонятно.


 
REA   (2003-10-08 17:39) [7]

Вынес всю работу с Brush, Pen и Font из пары SaveDC - RestoreDC - вроде полегчало. Видимо менеджер ресурсов болезненно реагирует на подобные трюки (Handle кисти до сохранения и после какой-нибудь разный).


 
DVM   (2003-10-08 17:45) [8]

Когда кисти присваивается новое значение, старое значение надо уничтожать DeleteObject;
Т.е. правильнее так:
1) Создаем новую кисть.
2) Делаем SelectObject на старой кисти на новую, старую запоминаем.
3) Рисуем если надо.
4) Удаляем обе кисти и новую и старую, если возможно. Или делаем SelectObject обратно на старую.


 
REA   (2003-10-08 18:34) [9]

Это я все в курсе (Еще с W3.11), но зачем тогда менеджер кистей? Оно ведь ресурсы экономит. Опять же когда нужно изменит регионы, шрифт, кисти и Pen, то лучше уж DC сохранить.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.10.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
14-65584
Думкин
2003-10-02 06:36
2003.10.20
С днем рождения! 2 октября.


1-65528
Кодер
2003-10-08 09:52
2003.10.20
Свойство Enable в TRadioGroup


3-65380
The X
2003-09-27 17:44
2003.10.20
Корректная работа с паролями для Парадокс


14-65592
Tetros1
2003-10-01 17:52
2003.10.20
Задача по программированию


14-65608
Denizzz
2003-10-01 08:10
2003.10.20
Прошу дать мне рекомендации





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский