Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.12;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.042 c
3-1157979564
kaif
2006-09-11 16:59
2006.11.12
Как ограничить запрашиваемый SQL-набор в ADO


15-1161983461
unknown
2006-10-28 01:11
2006.11.12
Clawfinger


15-1161717019
XeRoN
2006-10-24 23:10
2006.11.12
Помогите плиз!


3-1153997115
ALex123
2006-07-27 14:45
2006.11.12
MySQL и dbExpress: unable to load libmysql.dll.


15-1161777727
Vlad
2006-10-25 16:02
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский