Главная страница
    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.047 c
15-1189995840
Slider007
2007-09-17 06:24
2007.10.14
С днем рождения ! 17 сентября 2007 понедельник


2-1190398999
Gloomer
2007-09-21 22:23
2007.10.14
Свойства модема для конкретного соединения удаленного доступа


3-1181563376
Sapos
2007-06-11 16:02
2007.10.14
Как правильно составить SQL запрос


2-1189756777
AllDer
2007-09-14 11:59
2007.10.14
таймаут сокета


2-1189972791
Alexey_K
2007-09-16 23:59
2007.10.14
Окно, подобие понели задач





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