![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Рисовать по региону [D6, XP]
Jimmy © (2007-09-20 21:12:00)Создаю регион:
var HRgn: THandle;
BeginPath(Image1.Canvas.Handle);
with Image1.Canvas do
begin
Font.Name := 'Comic Sans MS';
Font.Size := 64;
Font.Style := [fsBold];
Font.Color:=clBlack;
TextOut(0, 0, 'String');
end;
EndPath(Image1.Canvas.Handle);
HRgn := PathToRegion(Image1.Canvas.Handle);
Что теперь нужно сделать, чтобы после команды например
Image1.Canvas.Rectangle(0,0,100,50);
прорисовка проходила только по области региона?
Инс (2007-09-20 22:25:00) [1]
> Как говорят немцы, In grosse Familie kluvom klaz-kalz nicht!
:))) Учту!
homm (2007-09-20 22:24:00) [2]> [11] Однокамушкин (20.09.07 22:23)
> In grosse Familie kluvom klaz-kalz nicht
Кажется я расшифровал :) Круто.
Однокамушкин (2007-09-20 22:23:00) [3]
> Инс © (20.09.07 22:18) [10]
> Эх, долго искал... :)
Как говорят немцы, In grosse Familie kluvom klaz-kalz nicht!
Инс (2007-09-20 22:18:00) [4]Эх, долго искал... :)
Инс (2007-09-20 22:17:00) [5]
> [7] Jimmy (20.09.07 22:08)
Попробуйте вставит вызов
SetPolyFillMode(Image1.Canvas.Handle,WINDING);
Однокамушкин (2007-09-20 22:14:00) [6]
> в моем коде к строке TextOut(0, 0, 'String'); добавить TextOut(0,
> 2, 'String'); то пересечение выпадает из региона.
В качестве идеи, не уверен, что получится: попробуйте перед выводом текста добавить ещё SetPolyFillMode(Handle, WINDING);
Если не получится, то придётся немного повозиться: сначала сделать регион с одной надписью, потом с другой, а потом объединить их функцией CombineRgn
> не дадите ли какую-нибудь ссылочку на справку по регионам?
Лучше MSDN ещё никто ничего не придумал: http://msdn2.microsoft.com/en-us/library/ms536684.aspx
Jimmy (2007-09-20 22:08:00) [7]Все получилось! Большое спасибо! Но все же еще вопрос: Если в моем коде к строке TextOut(0, 0, 'String'); добавить TextOut(0, 2, 'String'); то пересечение выпадает из региона. Как этого избежать и не дадите ли какую-нибудь ссылочку на справку по регионам?
Однокамушкин (2007-09-20 21:51:00) [8]
> Только регион задался вне текста, а мне нужно внутри.
Это у вас регион такой получился... Чтобы регион был внутри букв, перед TextOut добавьте вызов SetBkMode(Handle, TRANSPARENT);
Jimmy (2007-09-20 21:48:00) [9]Добавил SelectClipRgn(Image1.Canvas.Handle,HRgn); получилось. Только регион задался вне текста, а мне нужно внутри.
Однокамушкин (2007-09-20 21:40:00) [10]См. функцию SelectClipRgn... или сразу SelectClipPath, тогда PathToRegion можно не вызывать
Jimmy (2007-09-20 21:36:00) [11]Однако этого не происходит. Что-то в моем коде не так.
Anatoly Podgoretsky (2007-09-20 21:33:00) [12]> Jimmy (20.09.2007 21:12:00) [0]
Дать любую команду рисования, рисовать будет только внутри региона
antonn (2007-09-20 21:14:00) [13]давай еще раз, можно с картинками%)