Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.11;
Скачать: CL | DM;

Вниз

Рамка выделения штрих-пунктиром как в графических редакторах   Найти похожие ветки 

 
default ©   (2007-01-23 15:25) [0]

такое ощущение что она может быть получена без самостоятельной отрисовки
кто сталкивался с таким вариантом?
я к тому, что вот за курсором мыши нам ничего перерисовывать не нужно - это обеспечивает ОС
я про тоже, но в отношении рамки выделения


 
Runner   (2007-01-23 15:29) [1]

такое ощущение что она может быть получена без самостоятельной отрисовки

Используй Corel Draw или любой другой графический редактор - там ничего перерисовывать не нужно - рамку выделения штрих-пунктиром обеспечивает редактор.


 
default ©   (2007-01-23 15:29) [2]

Runner   (23.01.07 15:29) [1]
я сам пишу графическую "штуку"


 
Джо ©   (2007-01-23 15:31) [3]

Приходилось работать не с одним графическим редактором и вот что странно — у всех эти рамочки разные :)


 
Gero ©   (2007-01-23 15:33) [4]

DrawFocusRect?


 
default ©   (2007-01-23 15:33) [5]

Джо ©   (23.01.07 15:31) [3]
бывает сами рисуют
но вот, что я Джо тебе расскажу
в одну прогу где такая рамка есть я самостоятельно вывел графику и при использовании рамки моя графика не затиралась - отсюда и возникло предположение что это "системная" вещь в том редакторе
бывает, конечно, и сами рисуют


 
Gero ©   (2007-01-23 15:35) [6]

А вобще это xor штриховой линией.


 
tesseract ©   (2007-01-23 15:36) [7]


> в одну прогу где такая рамка есть я самостоятельно вывел
> графику и при использовании рамки моя графика не затиралась
> - отсюда и возникло предположение что это "системная" вещь
> в том редакторе


В смысле в окно нарисовал, а оно при наведении рамки не обновлялось?


 
Runner   (2007-01-23 15:36) [8]

я сам пишу графическую "штуку"

Ты?! Пишешь?! О как...
Прописать логику работы "рамки выделения штрих-пунктиром" (С) - 10 минут времени.
Думаешь, в форуме быстрее ответят "да"? Так в ОС, насколько я помню, этого нет. Есть в каких-то библиотеках классов. Но в VCL такого, кажется, нет.


 
Runner   (2007-01-23 15:38) [9]

при использовании рамки моя графика не затиралась

Тебе уже в [4], [6] ответили...


 
Vovan #2   (2007-01-23 15:42) [10]

Marching Ants?


 
default ©   (2007-01-23 15:48) [11]

Gero ©   (23.01.07 15:33) [4]
это просто выводит
надо чтобы тянулась и тд не вызывая инвалидации затираемых участков(ну как с указателем мыши, о чём я уже говорил)
Gero ©   (23.01.07 15:35) [6]
в GDI+ нету xor-вывода
она мне и нужен
вот представь линия проходит через кучу самописных графических контролов
и что я буду затирать это линию xor-ом? контролы придётся перерисовывать
а я хочу этого избежать, как в упомянутом программе, то есть чтобы система за меня перерисовывала как с курсором мыши о чём повторяю третий раз:)

В смысле в окно нарисовал, а оно при наведении рамки не обновлялось?
именно
не может же чужая программа обновлять области нарисованные мною:)
она же не может знать в принципе что я рисую
то, что чужая прога копирует куски поверхности рисования тоже практически исключено
это копирование делает система, я думаю


 
default ©   (2007-01-23 15:49) [12]


> она мне и нужен

он мне и НЕ нужен


 
default ©   (2007-01-23 15:51) [13]


> В смысле в окно нарисовал, а оно при наведении рамки не
> обновлялось?
> именно

всмысле при попадание рамки в нарисованную мною область и при выходе её оттуда моё область не затиралась


 
default ©   (2007-01-23 15:51) [14]


> Marching Ants?

что это?


 
Gero ©   (2007-01-23 15:51) [15]

> [11] default ©   (23.01.07 15:48)
> это просто выводит
> надо чтобы тянулась и тд не вызывая инвалидации затираемых
> участков(ну как с указателем мыши, о чём я уже говорил)

Выводи повторно, чтобы скрыть и еще раз, чтобы нарисовать заново, будет тянуться.
> [11] default ©   (23.01.07 15:48)
> не может же чужая программа обновлять области нарисованные
> мною:)

Почему это не может, перерисовывает окно и обновляет.


 
default ©   (2007-01-23 15:55) [16]

Gero ©   (23.01.07 15:51) [15]

> Выводи повторно, чтобы скрыть и еще раз, чтобы нарисовать
> заново, будет тянуться.

ты не совсем понял что мне надо...
в такой реализации при выходе рамки с контролов Я вынужден буду перерисовыть куски графобъектов, а я хочу чтобы это делала за меня СИСТЕМА

> Почему это не может, перерисовывает окно и обновляет.

всмысле при попадание рамки в нарисованную мною область в чужой программе и при выходе её оттуда моя область не затирается
единственная возможность для программы сделать это либо рамка реализована системно либо чужая программа копирует куски повер-ти рисования что почти исключено


 
default ©   (2007-01-23 15:56) [17]

Gero ©   (23.01.07 15:51) [15]
в GDI+ плюс нету xor-рисования
так что там такое не пойдёт


 
Gero ©   (2007-01-23 15:58) [18]

> [16] default ©   (23.01.07 15:55)

Я так ничего и не понял.


 
default ©   (2007-01-23 15:59) [19]

вот там, наверно, xor-рисованием и сделано...
а мне без него что придётся делать импорт неуправлемого кода...не дело будет...


 
default ©   (2007-01-23 16:01) [20]

Gero ©   (23.01.07 15:58) [18]
в GDI+ нету xor-рисования прямых


 
clickmaker ©   (2007-01-23 16:04) [21]


> [19] default ©   (23.01.07 15:59)
> вот там, наверно, xor-рисованием и сделано...
> а мне без него что придётся делать импорт неуправлемого
> кода

ControlPaint.DrawReversibleFrame / DrawReversibleLine


 
default ©   (2007-01-23 16:13) [22]

clickmaker ©   (23.01.07 16:04) [21]
да, именно то что надо
хорошо что задал вопрос
а то вручную бы некрасиво бы было
огромное
спасибо
кстати об этом классе мало где пишется(я нигде не видел)
в msdn-ом туторе по графике тоже не видел
я вот стал смотреть DrawFocusRect и набрёл на него
надо, видимо, просто просматривать классы пространств имён, на наличие полезностей
ещё раз спасибо и всем остальным тоже


 
TUser ©   (2007-01-23 16:17) [23]

> DrawFocusRect?

DrawFrameRect


 
default ©   (2007-01-23 16:37) [24]

clickmaker ©   (23.01.07 16:04) [21]
не подходит
например, пол формы имеет красный цвет, другая половина зелёный
цвет рамки на этих половинках будет разный
больше вариантов нету?


 
default ©   (2007-01-23 16:42) [25]

точнее, не так
"The backColor parameter is used to calculate the fill color of the frame so that it is always visible against the background."
а вот на участках где фон не такой пунктир рисуется цветом фона


 
default ©   (2007-01-23 16:45) [26]

и опять не так
вообще цвет пунктирной рамки разный на участках с цветом backColor и отличным от него
а мне надо чтобы уж если рамка чёрная, то она везде чёрная - без вариантов


 
default ©   (2007-01-23 16:53) [27]

вообщем в [24] верно
смех один, цвет рамки меняется от цвета формы
понятно что это сделано чтобы рамку всегда было видно, но мне не нужна такая радуга


 
Kolan ©   (2007-01-23 17:01) [28]

С ума сойти по русски:
http://msdn.microsoft.com/library/rus/default.asp?url=/library/rus/cpref/html/frlrfsystemwindowsformscontrolpaintclassdrawreversibleframetopic.asp

default ты хорошо читал?
Мож не заметил чего&#133


 
Kolan ©   (2007-01-23 17:02) [29]

Параметр backColor используется для расчета цвета рамки таким образом, чтобы ее всегда было видно на фоне.

Результаты этого метода можно отменить, нарисовав эту же рамку снова. Рисование рамки с помощью этого метода аналогично преобразованию области экрана, однако в данном случае будет обеспечено лучшее изображение и большее разнообразие цветов.
Требования


 
default ©   (2007-01-23 17:07) [30]

Kolan ©   (23.01.07 17:02) [29]
ты о чём?
я писал об этом

> понятно что это сделано чтобы рамку всегда было видно, но
> мне не нужна такая радуга



 
Kolan ©   (2007-01-23 17:10) [31]

«Рисование рамки с помощью этого метода аналогично преобразованию
области экрана, однако в данном случае будет обеспечено
лучшее изображение и большее разнообразие цветов.»

Вот я так понял что этот метод сам делает как ты сказал «радугу».

А если отменить его «Результаты этого метода можно отменить, нарисовав эту же рамку снова.», то я так понял что он НЕ буде работать и след. радуги НЕ будет.

Мож я не прав&#133


 
clickmaker ©   (2007-01-23 17:12) [32]


> [30] default ©   (23.01.07 17:07)

экий ты капризный.
ну так вот xor работает.
а если у тебя часть фона окажется = цвету рамки?


 
default ©   (2007-01-23 17:22) [33]

clickmaker ©   (23.01.07 17:12) [32]
это уже мои проблемы будут;)
но с радужной рамкой смотрится плохо
просто если вручную рисовать, то тогда придётся мне перерисовывать графобъекты  с которых сошли линии рамки(пусть у меня там не полностью будет они себя перерисовывать, а небольшие участки, практически только участки линий рамки), а этого хотелось обойти


 
Zeqfreed ©   (2007-01-23 17:23) [34]

Если рамку рисовать на оверлее, то он не будет ничем затираться.


 
default ©   (2007-01-23 17:25) [35]

Zeqfreed ©   (23.01.07 17:23) [34]
поподробней если можно


 
Stexen ©   (2007-01-23 17:38) [36]


> такое ощущение что она может быть получена без самостоятельной
> отрисовки
> кто сталкивался с таким вариантом?
> я к тому, что вот за курсором мыши нам ничего перерисовывать
> не нужно - это обеспечивает ОС
> я про тоже, но в отношении рамки выделения

Всегда сам рисовал, там ведь затирать ничего не надо, все зависит от того, как у тебя построен класс редактора, у меня вот был буфер который хранил всю картинку поэтому ничего там не затиралось, а на событие отрисовки уже непосредственно в видимой зоне я выводил рамочку, а так можно сделать еще линию штрихами с xor"ом и все.
Если ничего нового не сказал сори, лень было всю ветку читать.А так я и бегущих мурваьев делал в свое вримя и рамочки с квадратиками и тд... Кстати в G32 посмотреть можно, там тоже вроде бы не плохо реализованно, но муравьи там ужасные, висят на Idle и перерисовываются, что есть на мой взгляд редкостный маразм


 
default ©   (2007-01-23 17:43) [37]

Stexen ©   (23.01.07 17:38) [36]
да, эти варианты были
xor не подходит поскольку "чудит" с цветами
а про хранение в буфере может и так сделаю, не знаю пока, но вряд-ли


 
Stexen ©   (2007-01-23 17:49) [38]


> да, эти варианты были
> xor не подходит поскольку "чудит" с цветами
> а про хранение в буфере может и так сделаю, не знаю пока,
>  но вряд-ли

Если честно я тоже долго голову парил по этому поводу!Но подумай, ведь тебе оригинал картинки все равно надо будет хранить в памяти, иначе ты сильно в функциональности себя урезаешь. И на сколько мне известно многие так и делают.
Точнее сказать оригинал у тебя должен быть полюбому, а то ведь ни тебе зума, ни предварительного просмотра эффектов и тд...


 
default ©   (2007-01-23 17:49) [39]

но если никак не получится переложить отрисовку рамки на ОС, то буфер всё же лучше чем пока всё остальное


 
default ©   (2007-01-23 17:52) [40]


> то, что чужая прога копирует куски поверхности рисования
> тоже практически исключено

тут я погорячился
скорее всего так там и было сделано и так, видимо, и стоит делать


 
Stexen ©   (2007-01-23 17:55) [41]


> но если никак не получится переложить отрисовку рамки на
> ОС, то буфер всё же лучше чем пока всё остальное

А как ты на ос это переложишь у нее нет такой функции даже, ту голименькую рамочку которую рисует windows на рабочей столе надо самому делать(по-моему, ну в любом случая для серьезного редактора не годится)


 
Zeqfreed ©   (2007-01-23 17:58) [42]

> default ©   (23.01.07 17:25) [35]

Ну большинство видеоплееров выводит видео на оверлейную поверхность - специальную область в видеопамяти, которая рисуется поверх всего остального аппаратными средствами карты. Но насколько я знаю, большинство видеокарт поддерживают только цветовой ключ приемника, а не источника. Т.е. для рисования рамки вряд ли этот способ подойдет.



Страницы: 1 2 вся ветка

Текущий архив: 2007.02.11;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.123 c
15-1169475091
ert
2007-01-22 17:11
2007.02.11
У кого есть готовый программа


2-1169473545
hgd
2007-01-22 16:45
2007.02.11
Вопрос по RGB


15-1169304400
vidiv
2007-01-20 17:46
2007.02.11
Не нравится


2-1169749750
electroman239
2007-01-25 21:29
2007.02.11
Цвет РГБ в Интегер


3-1164198874
Stanislav
2006-11-22 15:34
2007.02.11
Сообщение в FastReport