|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.11.2007, 15:00 | #1 |
Пользователь
Регистрация: 08.11.2007
Сообщений: 25
|
Как вырезать на форме область определенной формы ("что то вроде ножниц")
Возможность изменения видимой области формы должна быть. На C# это просто: используется Region, даже текст можно нарезать таким образом. А как обстоит дело в Delphi?
|
08.11.2007, 15:05 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Тоже самое, есть Region.
I'm learning to live...
|
08.11.2007, 15:45 | #3 |
Владимир М.
Участник клуба
Регистрация: 30.10.2006
Сообщений: 1,289
|
тоже TRegion
Берегите друг друга!
|
08.11.2007, 18:07 | #4 |
Пользователь
Регистрация: 08.11.2007
Сообщений: 25
|
Region
Парни, что то не то вы мне подсказали.
Ни Region ни Tregion Help Delphi ничего путного не выдает. Помогите кто нибудь, пожалуйста. |
08.11.2007, 20:00 | #5 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Примерно вот так:
Код:
Последний раз редактировалось mihali4; 08.11.2007 в 20:08. |
09.11.2007, 15:13 | #6 |
Пользователь
Регистрация: 08.11.2007
Сообщений: 25
|
Нужно вырезать строку текста
Смотрел я в хелпе есть только Polygon - то есть по массиву точек происходит вырезание.
В C# есть AddString - это проще. Но мне надо строку текста на форме вырезать помогите кто чем. Может каким то образом можно строку загнать в массив точек, а потом использовать CreatePolygonRgn(...). |
09.11.2007, 15:26 | #7 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Код:
http://www.programmersclub.ru/files/dfaq.rar |
09.11.2007, 16:24 | #8 |
Участник клуба
Регистрация: 09.11.2007
Сообщений: 1,762
|
Можно создать форму по картинке. Т.е. находишь картинку в форме ножниц и создаёшь по ней форму.
Код procedure Tmain.WMNCHitTest (var M:TWMNCHitTest); begin inherited; if M.Result = htClient then M.Result := htCaption; end; procedure Tmain.FormCreate(Sender: TObject); var regn, tmpRegn: integer; // регион окна и временный регион x, y: integer; // координаты пикселя nullClr: TColor; // «прозрачный цвет» begin nullClr := image1.picture.Bitmap.Canvas.Pixels[0, 0]; // Image1 это картинка по которой создается форма окна regn := CreateRectRgn(0, 0, image1.picture.Graphic.Width, image1.picture.Graphic.Height); for x := 1 to image1.picture.Graphic.Width do for y := 1 to image1.picture.Graphic.Height do if image1.picture.Bitmap.Canvas.Pixels[x - 1, y - 1] = nullClr then begin tmpRegn := CreateRectRgn(x - 1, y - 1, x, y); CombineRgn(regn, regn, tmpRegn, RGN_DIFF); DeleteObject(tmpRegn); end; SetWindowRgn(main.handle, regn, true); end; |
10.11.2007, 00:01 | #9 | |
Пользователь
Регистрация: 08.11.2007
Сообщений: 25
|
Цитата:
nullClr := image1.picture.Bitmap.Canvas.Pixels[0, 0]; в этой строке при считываниии цвета картинка пропадает, если эту строку закоментировать то картинка на форме остается. Вывод такой: при обращении к массиву цветов картинка пропадает с формы. Как быть? В общем то очень хочется чтобы этот отличный алгоритм заработал. |
|
10.11.2007, 08:51 | #10 | |
Участник клуба
Регистрация: 09.11.2007
Сообщений: 1,762
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
нажатие кнопки "X" на форме | strannik | Общие вопросы Delphi | 6 | 09.05.2011 02:42 |
Как сделать так,чтобы на форме отображалось свободное место диска "С"???? | Alexij | Общие вопросы Delphi | 4 | 11.07.2008 23:21 |
Проблемма: Программное отключение "защиты формы" влияет на скорость выполнения программного кода... | StrikeR33 | Microsoft Office Word | 0 | 28.05.2008 20:11 |
Файл в состоянии "Вырезать". | NeiL | Общие вопросы Delphi | 0 | 24.04.2008 23:23 |
Запретить закрытие окошка формы крестиком "Х" | Slim | Microsoft Office Excel | 5 | 28.03.2007 19:39 |