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

Вниз

OffsetRgn и TCanvas   Найти похожие ветки 

 
fog   (2006-10-26 03:22) [0]

ДВС! Помогите найти ошибку в тест-программе, плз.


procedure TForm1.MyDraw(const Cs: TCanvas);
begin
Cs.Ellipse(0, 0, 110, 110);
end;

procedure TForm1.Button1lick(Sender: TObject);
var i, j: integer;
   p: TPoint;
   r: TRect;
   hr: hRgn;
begin
hr := CreateRectRgn(0, 0, 100, 100);
SelectClipRgn(Canvas.Handle, hr);
SetWindowOrgEx(Canvas.Handle, 0, 0, @p);
for j := 1 to 5 do
begin
 MyDraw(Canvas);
 i := OffsetRgn(Canvas.Handle, -j*100, 0);
//i = 0 - область не смещается
 OffsetWindowOrgEx(Canvas.Handle, -j*100, 0, @p);
 Canvas.Pen.Color := clRed shl j*10;
end;
DeleteObject(hr);
end;


Замысел - последовательно отрисовать несколько однотипных процедур (MyDraw) в одном DC с отсечением - чтобы исключить проверку на выпадение точек за пределы области.

Просьба рассматривать данный вопрос AS IS. (без вариантов BitBlt, TBitmap  и т.д. и т.п.)


 
Gero ©   (2006-10-26 03:25) [1]

> [0] fog   (26.10.06 03:22)

Синтаксических ошибок нет.


 
Ketmar ©   (2006-10-26 04:17) [2]

OffsetRgn(), F1. и долго думать, почему HDC -- это не HRGN.


 
fog   (2006-10-26 21:09) [3]

Изменил код на

OffsetRgn(hr, -100, 0);
OffsetWindowOrgEx(Canvas.Handle, -100, 0, @p);

Эффект - 0. Рисует только один круг.

OffsetRgn работает относительно Viewport или Window?


 
Ketmar ©   (2006-10-26 21:28) [4]

>[3] fog 26-Oct-2006, 21:09
насколько мне помнится, менять надо что-то одно: или регион, или начало координат. проверять лень, сам проверь.


 
DiamondShark ©   (2006-10-26 23:08) [5]

регион двигать не надо


 
Ketmar ©   (2006-10-26 23:14) [6]

>[5] DiamondShark(c) 26-Oct-2006, 23:08
>регион двигать не надо
ну да. я примерно это и имел в виду. оставил автору для экспериментов. %-)


 
fog   (2006-10-26 23:32) [7]

Регион двигать надо.

 OffsetClipRgn(Canvas.Handle, 100, 0);
 OffsetViewportOrgEx(Canvas.Handle, 100, 0, p);  


Осталось только выяснить как это стелать через OffsetWindowOrgEx.


 
Ketmar ©   (2006-10-26 23:43) [8]

ты разницу между region и clipping region улавливаешь?


 
Ketmar ©   (2006-10-26 23:44) [9]

что-то у меня подозрение, что ты вместо поискать в инете описания пытаешься ненаучным тыком всё понять. нет, это тоже способ, но муторный. иногда проще поискать. %-)


 
Ketmar ©   (2006-10-26 23:45) [10]

кстати, а фэньшуй... э... фэньхоа... э... о! Feng Yuan об этом, часом, не писал?


 
fog   (2006-10-27 00:19) [11]

2 Ketmar>
"Профессионал - это тот, кто не только знает, а еще умеет объяснить."

Не лень писать голимые коменты?


 
Ketmar ©   (2006-10-27 00:30) [12]

>[11] fog 27-Oct-2006, 00:19
>Не лень писать голимые коменты?
ясно. ещё один чукча. в сад.



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

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

Наверх




Память: 0.47 MB
Время: 0.048 c
15-1161522452
Dmytro
2006-10-22 17:07
2006.11.12
Автозагрузка в Win2003


1-1159617913
Diss
2006-09-30 16:05
2006.11.12
Отправка Смс-сообщений через телефон, подключенный к ком-порт


2-1161619167
AlexanderMS
2006-10-23 19:59
2006.11.12
Расплывчатые иконки, и как с ними бороться.


15-1161636000
Real
2006-10-24 00:40
2006.11.12
Интернет Радио - с чего начать?


6-1150754439
YuraKiller2
2006-06-20 02:00
2006.11.12
Работа с удалённой базой





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