Главная страница
    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.041 c
15-1161693217
Орион
2006-10-24 16:33
2006.11.12
Хостинг и 81 порт


2-1162031764
oleg_v
2006-10-28 14:36
2006.11.12
как удалить (очистить) все записи из БД(*.db)


2-1161697308
Дева
2006-10-24 17:41
2006.11.12
Перемещение в TDBGrid


3-1158224830
vodvorezlaya
2006-09-14 13:07
2006.11.12
Подскажите с компонентом TDBEdit и TDBComboBox


15-1161960379
IMHO
2006-10-27 18:46
2006.11.12
Сервисы ICQ





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