Форум: "Начинающим";
Текущий архив: 2007.10.14;
Скачать: [xml.tar.bz2];
ВнизРисовать по региону Найти похожие ветки
← →
Jimmy (2007-09-20 21:12) [0]Создаю регион:
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);
прорисовка проходила только по области региона?
← →
antonn © (2007-09-20 21:14) [1]давай еще раз, можно с картинками%)
← →
Anatoly Podgoretsky © (2007-09-20 21:33) [2]> Jimmy (20.09.2007 21:12:00) [0]
Дать любую команду рисования, рисовать будет только внутри региона
← →
Jimmy (2007-09-20 21:36) [3]Однако этого не происходит. Что-то в моем коде не так.
← →
Однокамушкин (2007-09-20 21:40) [4]См. функцию SelectClipRgn... или сразу SelectClipPath, тогда PathToRegion можно не вызывать
← →
Jimmy (2007-09-20 21:48) [5]Добавил SelectClipRgn(Image1.Canvas.Handle,HRgn); получилось. Только регион задался вне текста, а мне нужно внутри.
← →
Однокамушкин (2007-09-20 21:51) [6]
> Только регион задался вне текста, а мне нужно внутри.
Это у вас регион такой получился... Чтобы регион был внутри букв, перед TextOut добавьте вызов SetBkMode(Handle, TRANSPARENT);
← →
Jimmy (2007-09-20 22:08) [7]Все получилось! Большое спасибо! Но все же еще вопрос: Если в моем коде к строке TextOut(0, 0, "String"); добавить TextOut(0, 2, "String"); то пересечение выпадает из региона. Как этого избежать и не дадите ли какую-нибудь ссылочку на справку по регионам?
← →
Однокамушкин (2007-09-20 22:14) [8]
> в моем коде к строке TextOut(0, 0, "String"); добавить TextOut(0,
> 2, "String"); то пересечение выпадает из региона.
В качестве идеи, не уверен, что получится: попробуйте перед выводом текста добавить ещё SetPolyFillMode(Handle, WINDING);
Если не получится, то придётся немного повозиться: сначала сделать регион с одной надписью, потом с другой, а потом объединить их функцией CombineRgn
> не дадите ли какую-нибудь ссылочку на справку по регионам?
Лучше MSDN ещё никто ничего не придумал: http://msdn2.microsoft.com/en-us/library/ms536684.aspx
← →
Инс © (2007-09-20 22:17) [9]
> [7] Jimmy (20.09.07 22:08)
Попробуйте вставит вызов
SetPolyFillMode(Image1.Canvas.Handle,WINDING);
← →
Инс © (2007-09-20 22:18) [10]Эх, долго искал... :)
← →
Однокамушкин (2007-09-20 22:23) [11]
> Инс © (20.09.07 22:18) [10]
> Эх, долго искал... :)
Как говорят немцы, In grosse Familie kluvom klaz-kalz nicht!
← →
homm © (2007-09-20 22:24) [12]> [11] Однокамушкин (20.09.07 22:23)
> In grosse Familie kluvom klaz-kalz nicht
Кажется я расшифровал :) Круто.
← →
Инс © (2007-09-20 22:25) [13]
> Как говорят немцы, In grosse Familie kluvom klaz-kalz nicht!
:))) Учту!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.10.14;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.043 c