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

Вниз

Как передать канву в качестве параметра ?   Найти похожие ветки 

 
Danila   (2002-03-30 11:44) [0]

Нужно написать процедуру, которой передается в качестве параметра TCanvas любого компонента (типа procedure Draw(var Canv:TCanvas) ). А процедура рисует на этой канве нечто...
Как это можно организовать ?


 
MBo   (2002-03-30 11:49) [1]

так и организовывай
procedure Proc(Cn:Tcanvas);
begin
Canvas.Rect...
end;

вызов
Proc(MyBitmap.Canvas);


 
Anatoly Podgoretsky   (2002-03-30 11:56) [2]

Var только не к чему, замени на Const, можно и бех этого, но так культурнее.


 
Danila   (2002-03-31 00:30) [3]

Не понял, как можно обойтись без VAR, а тем более использовать Const ? Ведь процедура как раз рисует на передаваемой канве ! А так она будет рисовать на копии канвы...


 
stexen   (2002-03-31 01:03) [4]

ты если токо ресуешь то можешь вполне обйтись передачей дескриптора hdc и на WinAPI - это еще более культурнее.. а если думаешь что Бмлл Гей..тс мудак можешь ссам аргонизовать процедуры рисования.... и ваще прикиньте все так кричат во гдиплюс гдиплюс а у меня с икспи пачему то нет его


 
SoftOne   (2002-03-31 01:41) [5]

> Danila (31.03.02 00:30)
А что такое "Копия Канвы"? Интересно было бы узнать :)

Никаких копий канвы и не будет. Будет обращение по ссылке на исходную канву.


 
Danila   (2002-03-31 03:37) [6]

SoftOne, что такое копия канвы ?

Ну как бы обьяснить... Я всегда думал, что можно передавать параметры в процедуру по ссылке и по значению. По значению - это когда для процедуры создается копия передаваемого параметра, и в теле процедуры идет работа с именно этой копией. То есть, процедура не может изменить самого передаваемого параметра. А по значению (ключевое слово Var) - соответственно передается ссылка на сам параметр, и если в теле процедуры его изменят, то и сам параметр изменится... мож криво объяснил, но смысл думаю понятен =)
так вот я думаю, что по аналогии, если писать просто Procedure XXX(Canv:TCanvas), то процедура XXX будет иметь дело с копией канвы. И будет рисовать хрен знает где...


 
Song   (2002-03-31 10:50) [7]

Неправда. Если Вы передаёте канвас в качестве фиктивного параметра в процедру, она будет рисовать не "хрен знает где", а именно на этом канвасе. Говорю Вам авторитетно, потому что недавно как раз занимался подобной задачей. Если у Вас ошибка, ищите её в другом месте.


 
SoftOne   (2002-04-01 02:33) [8]

> Danila (31.03.02 03:37)
>Ну как бы обьяснить... Я всегда думал, что можно передавать >параметры в процедуру по ссылке и по значению. По значению - это >когда для процедуры создается копия передаваемого параметра,

Правильно думал! Именно так и передаются параметры в процедуру.
Но!!! Ты передаешь в нее параметр типа TCanvas, который уже имеет тип Pointer. Теперь разберись, что тебе передастся в случаях "по ссылке" и "по значению"!



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

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

Наверх





Память: 0.46 MB
Время: 0.006 c
1-32781
Rooman
2002-03-23 17:54
2002.04.11
Отсылка сообщения через зад:)


3-32664
GenBr
2002-03-20 12:33
2002.04.11
ClientDataSet


1-32835
greenrul
2002-03-28 12:55
2002.04.11
Разделение труда двух Delphi-developer ов.


1-32852
Anton+
2002-03-29 08:20
2002.04.11
Как создать удалить файл?


14-32968
С_тоша
2002-03-04 07:52
2002.04.11
Помогите!





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