Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 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. Теперь разберись, что тебе передастся в случаях "по ссылке" и "по значению"!




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




Наверх





Память: 0.73 MB
Время: 0.039 c
14-32976          tovSuhov              2002-03-06 07:25  2002.04.11  
Про Counter-Strike...


1-32890           DikobraZ              2002-03-29 15:52  2002.04.11  
JPG в буфер!


1-32727           ola                   2002-03-29 06:04  2002.04.11  
Help!!!! Помогите, уважаемые мастера....


14-32943          VID                   2002-02-25 18:43  2002.04.11  
Подсветка HTML и др.


1-32767           KvORubin              2002-03-31 06:27  2002.04.11  
Как корректно воспроизвести WAV файл (Без TMediaPlayer) ???