Текущий архив: 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 ты хорошо читал?
Мож не заметил чего…
← →
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]«Рисование рамки с помощью этого метода аналогично преобразованию
области экрана, однако в данном случае будет обеспечено
лучшее изображение и большее разнообразие цветов.»
Вот я так понял что этот метод сам делает как ты сказал «радугу».
А если отменить его «Результаты этого метода можно отменить, нарисовав эту же рамку снова.», то я так понял что он НЕ буде работать и след. радуги НЕ будет.
Мож я не прав…
← →
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]
> то, что чужая прога копирует куски поверхности рисования
> тоже практически исключено
тут я погорячился
скорее всего так там и было сделано и так, видимо, и стоит делать
Страницы: 1 2 вся ветка
Текущий архив: 2007.02.11;
Скачать: CL | DM;
Память: 0.57 MB
Время: 0.05 c