|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
Я в VB6 использовал PictureBox и Frame. При этом преимущественно PictureBox - он в VB6 отвечает следующим требованиям: 1) Возможность "простого" размещения картинки средствами среды PictureBox1.Picture = "C:\test.bmp" 2) Могу рисовать поверх PictureBox используя понятие hdc . 3) Роль контейнера, т.е. могу натыкать туда Options, либо просто групировать туда контролы: по смыслу, для удобства, и т.д. Либо чтобы одновременно скрывать/показывать группы контролов. 4) Могу сабклассить PictureBox, например для использования: Показательный пример - обработка WM_CTLCOLORBTN, WM_CTLCOLOREDIT, WM_CTLCOLORLISTBOX -когда надо обеспечить "прозрачность" контролов расположенных поверх рисунка. Ну или для любых других целей. Я так понял что местный PictureBox (.Net) категорически не удовлетворяет ни одному из требований кроме первого. У него даже понятие handle (HWND) отсутствует. Что использовать? Panel? Как там с "простым размещением рисунка"? Теперь о Frame. В VB6 я Frame недолюбливал и использовал только ради рамки с текстом. Да и то. Приходилось обычно вкладывать PictureBox внутрь Frame, т.к. при применении манифест-стилей были глюки с прорисовкой контролов, если вкладывать их внутрь Frame напрямую. Я читал что Frame=Panel / GroupBox (в завис. от того нужна ли граница с текстом). Эквивалентна ли замена с т. зр. сабклассинга и так далее, а не с точки зрения подхода школьника "влепить туда картинку и хватит"? Если мой ход мыслей насчет Frame (VB6)->GroupBox(.NET) Picturebox(VB6) -> Panel (.NET) верен, то насколько прочие "интересные" контейнеры скажем TableLayoutPanel, SplitContainer отвечают требованиям ПОЛНОЦЕННОСТИ. Еще. Про GDI/GDI+ То что ваша Graphics это один в один обертка над GDI+, это я понял. Очень бы хотелось думать что обертка полная и безглючная, потому что мне в дальнейшем понадобится отображение многостраничных TIFF, различные фильтры (например компрессии этих TIFF, сохранение в разных форматах и т.д.) , изменение разрешения, к-ва цветов и т.д.. Но я не вижу например простой обертки над GDI, кот. честно говоря нужно значительно чаще: К примеру мне нужно установить "серый" стиль пункта меню на классике (когда он Enabled=false) API-код: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
По ".Net варианту" приходится городить такой огород: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
При этом с ф-цией Код: vbnet 1. 2.
я не справился. По идее есть свойство DrawItemEventArgs.ForeColor - свойство но оно ReadOnly В нормальной жизни такие штуки делаются через GDI а не GDI+. Через GDI+ я могу нарисовать итем включая текст самостоятельно, что все стрипы похоже и делают, но заниматься херней таким рисованием НЕ ХОЧУ и НЕ БУДУ по крайней мере для случаев когда подобные издержки не требуются, как в приведенном примере. Т.е. как быть с GDI (которое не плюс)? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 05:02 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
Дмитрий772) Могу рисовать поверх PictureBox используя понятие hdc . У него даже понятие handle (HWND) отсутствует. Вы принципиально не читаете мануалы? Код: c# 1. 2.
Дмитрий773) Роль контейнера, т.е. могу натыкать туда Options, либо просто групировать туда контролы: по смыслу, для удобства, и т.д. Либо чтобы одновременно скрывать/показывать группы контролов. Label тоже не может контейнером, но почему-то вас это напрягает. Поместите пикчебокс внутри панели. Панель будет контейнером и для него, и для любых других контролов. Дмитрий77Panel? Как там с "простым размещением рисунка"? Для простого размещения используйте backgroundImage. Если очень хочется, можно рисовать и по панели. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Дмитрий77Теперь о Frame. Просто примите как данность, что VB6 и VB.NET - разные языки с похожим синтаксисом и ищите как сделать на Net, а не как использовать прежние подходы. Дмитрий77К примеру мне нужно установить "серый" стиль пункта меню на классике (когда он Enabled=false) А он автоматом не устанавливается разве? Или я не понял, что вам надо? Зачем городить рисование, если делается через свойства? Вот, например, установка красного цвета фона для пункта меню. Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 09:37 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
Дмитрий77, использовать GDI(+) тогда , когда есть Direct2D некузяво нам даже не нужен WPF для этого. один раз пишем что то типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
а теперь просто используем. Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 12:33 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
никаких бекбуферов и великолепная скорость. одни только плюсы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 12:35 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
Cat2Дмитрий772) Могу рисовать поверх PictureBox используя понятие hdc . У него даже понятие handle (HWND) отсутствует. Вы принципиально не читаете мануалы? Код: c# 1.
Да теперь вижу что handle (HWND) есть Почму-то вчера набрал Picturebox1. и не увидел .handle Оч.удивился... (про-гля-дел!!!) А что, для того чтоб увидеть .handle тоже надо читать мануалы? Но контейнером он действительно быть не может, буду в этих случаях использовать Panel. Cat2Просто примите как данность, что VB6 и VB.NET - разные языки с похожим синтаксисом и ищите как сделать на Net Именно об этом и идет речь. Дмитрий77то насколько прочие "интересные" контейнеры скажем TableLayoutPanel, SplitContainer отвечают требованиям ПОЛНОЦЕННОСТИ Похоже все нормально. Они могут быть "родителями" и их можно сабклассить при необходимости. Cat2Дмитрий77К примеру мне нужно установить "серый" стиль пункта меню на классике (когда он Enabled=false) А он автоматом не устанавливается разве? Или я не понял, что вам надо? Зачем городить рисование, если делается через свойства? Вот, например, установка красного цвета фона для пункта меню. Код: c# 1.
Не-а, не понял, здесь смотри: Как заменить "вдавленный стиль" на "серый" (в меню) 1) Речь не идет о "Strip", речь идет о нормальном меню (в .Net соответствует контролам MainMenu и ContextMenu -которые без слова СТРИП). 2) (Автоматом устанавливается только при включенных XP/Виста теме) Нет, автоматом НА КЛАССИЧЕСКОМ СТИЛЕ СИСТЕМЫ не устанавливается. Автоматом устанавливается Engraved (гравировка). "Engraved (гравировка)" и "серый" -это не одно и то же. 3) Вот тебе решение этого вопроса с объяснениями (и другого быть не может) 14350180 4) Вот тебе решение того же вопроса на .Net (в моем первом посте): Дмитрий77По ".Net варианту" приходится городить такой огород: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
5) А вот ОТСЮДА следует вопрос про GDI (которое НЕ ПЛЮС): Дмитрий77При этом с ф-цией Код: vbnet 1. 2.
я не справился. Т.е. как быть с GDI (которое не плюс)? Cat2использовать GDI(+) тогда , когда есть Direct2D некузяво Извини, но я не спрашивал ни про Direct2D, ни про Graphics, которая ==GDI+. Cat2ищите как сделать на Net Вот я и ищу "ПО-ЧЕСТНОМУ" как сделать в частности SetTextColor (которая у меня API) на .Net. Но это GDI, а не GDI+ (которая Grapics -Net обертка над GDI+). Т.е. по сути вопрос Есть ли в .Net "родная" обертка над GDI? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 15:01 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
Дмитрий77 Есть ли в .Net "родная" обертка над GDI? весь .net является обёрткой над разнообразными API пиши c++ и ни в чём себе не отказывай ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 15:48 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
Дмитрий77Не-а, не понял, здесь смотри: Как заменить "вдавленный стиль" на "серый" (в меню) 1) Речь не идет о "Strip", речь идет о нормальном меню (в .Net соответствует контролам MainMenu и ContextMenu -которые без слова СТРИП). 2) (Автоматом устанавливается только при включенных XP/Виста теме) Нет, автоматом НА КЛАССИЧЕСКОМ СТИЛЕ СИСТЕМЫ не устанавливается. Автоматом устанавливается Engraved (гравировка). "Engraved (гравировка)" и "серый" -это не одно и то же. Это принципиально важно? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 17:36 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
Дмитрий77Cat2использовать GDI(+) тогда , когда есть Direct2D некузяво Извини, но я не спрашивал ни про Direct2D, ни про Graphics, которая ==GDI+. Я этого не писал. Вы вручную сделали эту "мою" цитату. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 17:38 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
Дмитрий77Вот я и ищу "ПО-ЧЕСТНОМУ" как сделать в частности SetTextColor (которая у меня API) на .Net. Но это GDI, а не GDI+ (которая Grapics -Net обертка над GDI+). Т.е. по сути вопрос Есть ли в .Net "родная" обертка над GDI? Я не понимаю Вашего желания непременно отрисовывать контролы через GDI. Есть стандартные свойства. Их можно просто изменить или, при нужде, перехватит в событии onPaint и изменить по условию. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 17:43 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
Cat2Я не понимаю Вашего желания непременно отрисовывать контролы через GDI. Есть стандартные свойства. Их можно просто изменить или, при нужде, перехватит в событии onPaint и изменить по условию. ну он хочет приключений. вольному воля. в отрисовке сконтролов средствами GDI , а ищё лучше Direct2D есть свой плюс. в частности можно сделать DataGridView , который будет работать на несколько порядков быстрее стандартного, не зависимо от количества строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 18:27 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
beg-in-er, тормознутость грида связана с GDI не в первую очередь ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 18:33 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
Изопропилbeg-in-er, тормознутость грида связана с GDI не в первую очередь це правда. но всё же как то надо его отображать. либо через создание контролов, либо просто рисовать ячейки. а если рисовать , то выбор один из двух гди и директ2д ( для ценителей есть ещё ДиректХ) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 18:39 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
beg-in-er, ох уж это стон опять раздается о тормознутости грида. да не тормознутый он, просто готовить надо,~~~ 60 -70 перерисовк в секунду - держит, ну кому это надо, эстонцам и раз в минуту сгодится.. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 19:06 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
beg-in-erдирект2д ( для ценителей есть ещё ДиректХ) ну тогда уж корректно назовём всё Direct3D ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 19:23 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
Изопропилвесь .net является обёрткой над разнообразными API Вот я и спрашиваю: что в .Net есть обертка над GDI? Ну или скажите честно что конкретно ЭТО в .Net нереализовано. Cat2Дмитрий77Не-а, не понял, здесь смотри: Как заменить "вдавленный стиль" на "серый" (в меню) 1) Речь не идет о "Strip", речь идет о нормальном меню (в .Net соответствует контролам MainMenu и ContextMenu -которые без слова СТРИП). 2) (Автоматом устанавливается только при включенных XP/Виста теме) Нет, автоматом НА КЛАССИЧЕСКОМ СТИЛЕ СИСТЕМЫ не устанавливается. Автоматом устанавливается Engraved (гравировка). "Engraved (гравировка)" и "серый" -это не одно и то же. Это принципиально важно? А скажи, зачем мне делать ХУЖЕ чем уже сделано (через API)? Только затем что .NET этого сам не умеет? Не умеет, так и скажи. Я спрашивал: умеет ли .NET конкретно ЭТО с применением ЭТОГО механизма? Я не спрашивал что он ЕЩЕ УМЕЕТ. Мне не влом сделать это через API (тем более уже сделал). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 19:58 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
Дмитрий77Не умеет, так и скажи. Я спрашивал: умеет ли .NET конкретно ЭТО с применением ЭТОГО механизма? Я не спрашивал что он ЕЩЕ УМЕЕТ. Мне не влом сделать это через API (тем более уже сделал). У тебя что ни тема, то "разоблачние" .Net. Может, ну его нафиг? На API ж все сделал ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 20:18 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
Дмитрий77Вот я и спрашиваю: что в .Net есть обертка над GDI? Ну или скажите честно что конкретно ЭТО в .Net нереализовано. Не знаю, что вы имеtте ввиду. GDI в Nет есть. И уж точно множество функций в НЕТ не меньше, чем в VB6. Если Вы не можете организовать его вызовы - то это проблемы у Вас, а не у языка. Дмитрий77А скажи, зачем мне делать ХУЖЕ чем уже сделано (через API)? Только затем что .NET этого сам не умеет? Он умеет все, что умеет API. Не Вы ли в статовом топике писали, что у контролов нет hwnd? Уверяю, если Вы, наконец, почитаете мануалы, то сможете писать внешне хорошие программы. Насчет того, что Вы можете писать просто хорошие программы я сильно сомневаюсь. Яйца танцору мешают. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 21:06 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
Cat2Не Вы ли в статовом топике писали, что у контролов нет hwnd?. Как смешно. А знаешь, я наверно был морально готов что у самопальных .Net контролов м.б. его и нет. Но я однако поправился: Дмитрий77Cat2пропущено... Вы принципиально не читаете мануалы? Код: c# 1.
Да теперь вижу что handle (HWND) есть Почму-то вчера набрал Picturebox1. и не увидел .handle Оч.удивился... (про-гля-дел!!!) Дмитрий77И уж точно множество функций в НЕТ не меньше, чем в VB6. А вот с этим я как раз не спорю. Иначе б не было смысла в него влезать. Дмитрий77GDI в Nет есть. Если Вы не можете организовать его вызовы - то это проблемы у Вас, а не у языка.. А ну раз так, то скажи мне как в .Net при полученном (средствами .Net) hdc установить SetTextColor. Код: vbnet 1. 2. 3. 4.
А вот потом будешь рассуждать про яйца и про мои способности. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 21:39 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
Дмитрий77А ну раз так, то скажи мне как в .Net при полученном (средствами .Net) hdc установить SetTextColor.Graphics.DrawString? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 23:21 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
P.S.: топег не читал. Уж больно много Вы, коллега, буков пишете. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 23:22 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
Дмитрий77, авторА ну раз так, то скажи мне как в .Net при полученном (средствами .Net) hdc установить SetTextColor. Не могу понять, а зачем поменять цвет текста, нужна такая практология? любой контрол содержит это свойство? если рисовать чтонить проблем нет как сказал skyANA ? можно и с градиентом... оооо, о гадиенте... айн момент.. *** на форме панель просто по бандитский Код: c# 1.
с поюсом конечно плохо, а как исполнить это без плюса? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 23:32 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
Где-то в степиоооо, о гадиенте... айн момент.. Код: c# 1.
градиент в Graphic Net - говно. только 2 цвета. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 23:45 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
skyANAGraphics.DrawString? Это GDI+ А надо GDI: SetTextColor function SetTextColor The SetTextColor function sets the text color for the specified device context to the specified color. Examples For an example, see "Setting Fonts for Menu-Item Text Strings" in Using Menus . Не перерисовать итем меню через GDI+, просто поменять цвет текста (sets the text color for the specified device context to the specified color). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 23:52 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
Где-то в степи с поюсом конечно плохо, Вот-вот, плюс хорошо, но далеко не всегда. Где-то в степиа как исполнить это без плюса? Конкретно с градиентами например вот так: 14856102 (под спойлером, но это не .Net) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2013, 00:04 |
|
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
|
|||
---|---|---|---|
#18+
beg-in-er, Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2013, 00:11 |
|
|
start [/forum/search_topic.php?author=paragraf&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
others: | 639ms |
total: | 847ms |
0 / 0 |