Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1189761258
Gaj
2007-09-14 13:14
2007.10.14
Кодировка при копировании полей таблицы BDE


2-1189849336
Sonic90
2007-09-15 13:42
2007.10.14
TrackBar


1-1185882922
oxffff
2007-07-31 15:55
2007.10.14
Статический вызов виртуального метода.


2-1189674456
alles
2007-09-13 13:07
2007.10.14
Как правильно уничтожать обьекты?


15-1190005822
Slider007
2007-09-17 09:10
2007.10.14
С днем рождения ! 15 сентября 2007 суббота





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