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

Вниз

прорисовка   Найти похожие ветки 

 
RaPToR_1   (2004-08-18 20:47) [0]

подскажите как ,например на панели ,прорисовывать по координатам точки заданного цвета?


 
Рыба ©   (2004-08-18 21:04) [1]

Canvas.Pixels


 
Mihey_temporary ©   (2004-08-18 22:40) [2]


> Рыба ©   (18.08.04 21:04) [1]


Canvas? На панели?


 
Алхимик ©   (2004-08-18 23:24) [3]

TMyPanel = class(TPanel);
...
TMyPanel(Panel1).Canvas.Pixels[10,10] := clRed;
TMyPanel(Panel1).Canvas.Pixels[20,20] := clRed;

:)


 
Mihey_temporary ©   (2004-08-19 00:07) [4]


> Алхимик ©   (18.08.04 23:24) [3]


Красивое решение, надо запомнить.


 
Алхимик ©   (2004-08-19 00:11) [5]


> [4] Mihey_temporary ©   (19.08.04 00:07)


Как я понимаю - это недокументированая фича.


 
Думкин ©   (2004-08-19 07:03) [6]

>  [5] Алхимик ©   (19.08.04 00:11)

Это не фича. Это стандартный способ вытаскивания protected.


 
Anatoly Podgoretsky ©   (2004-08-19 09:15) [7]

Это даже еще ниже, это приведение типов, куда как стандартнее, но метод относится к хакерским. Иногда так прямо и пишут, не TMyPanel, а THackClass, что точнее отражает суть.


 
KSergey ©   (2004-08-19 09:17) [8]

Однако сам по себе путь вполне соответствует документации.


 
NAlexey ©   (2004-08-19 10:08) [9]

Причем программисты от Borland сами частенько не гнушаются такими методами, можно убедиться задав поиск по "Hack" в исходниках VCL.


 
KSergey ©   (2004-08-19 10:14) [10]

> [9] NAlexey ©   (19.08.04 10:08)

А использовать то, что описано в документации - уже не прилично? ;)


 
NAlexey ©   (2004-08-19 10:16) [11]

>KSergey ©   (19.08.04 10:14) [10]
Ага, набивать срамнОй текст одной рукой, другой стыдливо прикрывая глаза.:)


 
Семен Сорокин ©   (2004-08-19 10:18) [12]

кому этот путь [3] не нравится :)) можно использовать другой:

with TCanvas.Create do]
try
 Handle := GetDC(Panel.Handle);
 // Use Canvas.Pixels ...
 ReleaseDC(Panel.Handle, Handle)
finally
 Free
end


 
NAlexey ©   (2004-08-19 10:24) [13]

>Семен Сорокин ©   (19.08.04 10:18) [12]
Ну так а нам нужен DC канвы а не панели?


 
NAlexey ©   (2004-08-19 10:28) [14]

>NAlexey ©   (19.08.04 10:24) [13]
Упс... Чушь спорол, прошу прощения.


 
KSergey ©   (2004-08-19 10:56) [15]

> [12] Семен Сорокин ©   (19.08.04 10:18)
> with TCanvas.Create do
> try
>  Handle := GetDC(Panel.Handle);
>  // Use Canvas.Pixels ...
>  ReleaseDC(Panel.Handle, Handle)
> finally
>  Free
> end

Встречный вопрос: а выделеная строка обязательна? TCanvas сам при уничтожении не высвободит?


 
Семен Сорокин ©   (2004-08-19 10:59) [16]

KSergey ©   (19.08.04 10:56) [15]

из Help"a по GetDC:

After painting with a common device context, the ReleaseDC function must be called to release the device context. Class and private device contexts do not have to be released. The number of device contexts is limited only by available memory.


 
KSergey ©   (2004-08-19 11:01) [17]

> [16] Семен Сорокин ©   (19.08.04 10:59)

Это когда я чистым WinAPI пользуюсь - то там понятно, разумеется.
А вот что есть в обертке TCanvas - вот в чем штука...


 
KSergey ©   (2004-08-19 11:01) [18]

Просто как-то искал, возможно не особо напрягаясь, правда
Но так и не нашел четкого, обоснованного ответа.


 
Семен Сорокин ©   (2004-08-19 11:07) [19]

я тоже точно сказать не могу, поэтому лучше уж пусть будет :)
но ничего похожего на ReleaseDC в деструкторе канваса не нашел, однако там есть принудительное выставление Handle в 0, может это оно?



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

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

Наверх





Память: 0.48 MB
Время: 0.035 c
1-1093004709
Sectey
2004-08-20 16:25
2004.09.05
Strring to PAnsiString Как ?


14-1092384888
User_OKA
2004-08-13 12:14
2004.09.05
Полифония wav


4-1090585996
_PG_
2004-07-23 16:33
2004.09.05
Получение некоторых данных из запущенной программы


3-1092021254
Максим
2004-08-09 07:14
2004.09.05
Потключение по сети


3-1092128046
Sir John
2004-08-10 12:54
2004.09.05
Как передать результат запроса клиенту?





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