|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
Здравствуйте! Есть такой код на С# Код: c# 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 17:11 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
Как из метода button1_Click обратиться к элементу формы panel1 для рисования? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 17:12 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
ferzmikk, "- Разрешите обратиться". По факту, вам нужно вызвать у панели перерисовку методом по типу Invalidate(). Метод Invalidate сделает необходимым при следующем цикле обработки перерисовку её панели и будет вызвано связанно с этим событие, которые вы переопределили. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 17:20 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
ferzmikkКак из метода button1_Click обратиться к элементу формы panel1 для рисования? Можно так: Код: c# 1. 2. 3. 4.
Но лучше так как сказал Roman Mejtes, т.к. элемент Panel очень часто вызывает событие Paint - изменили размер формы, переместили окно с панелью туда-сюда, переключили окна. Так работает Windows. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 17:29 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
Roman MejtesПо факту, вам нужно вызвать у панели перерисовку методом по типу Invalidate(). Метод Invalidate сделает необходимым при следующем цикле обработки перерисовку её панели и будет вызвано связанно с этим событие, которые вы переопределили.Я правильно понимаю, что если на панеле круг и квадрат, то при перерисовки будет перерисовывать круг и квадрат, но с другими параметрами (цвет, толщина, координаты)? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 18:35 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
ferzmikkRoman MejtesПо факту, вам нужно вызвать у панели перерисовку методом по типу Invalidate(). Метод Invalidate сделает необходимым при следующем цикле обработки перерисовку её панели и будет вызвано связанно с этим событие, которые вы переопределили.Я правильно понимаю, что если на панеле круг и квадрат, то при перерисовки будет перерисовывать круг и квадрат, но с другими параметрами (цвет, толщина, координаты)?вроде всё само в WF не работает, юзайте WPF, там есть и трансформации и масштабирование и с геометрией работать на много проще. На WF забил давно, не помню точного ответа на ваш вопрос. В WF есть еще проблемы с перерисовкой во время перемещения формы за границы экрана, буферизации двойные и так далее. С графикой работать не удобно. в WPF можно создать геометрию и отобразить её и больше ничего делать то и не надо, всё само работает как надо и hittest работает идеально. опишите точнее суть идеи, зачем вам рисовать в панели и я подскажу вам пример, как это сделать проще в WPF ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 18:53 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
Roman Mejtesопишите точнее суть идеи, зачем вам рисовать в панели и я подскажу вам пример, как это сделать проще в WPFИзучаю C# и экспериментирую с геометрической графикой на координатной оси. На панели надо отобразить некий набор отрезков и геометрическую фигуру (например, прямоугольник). После нажатия кнопки - отрезки (целиком и/или частично), которые входят в геометрическую фигуру, высвечиваются линиями по жирнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 19:12 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
Получился такой код C# Код: c# 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.
2. Если второй раз нажать на кнопку, то появляется ошибка на строке Код: c# 1.
"System.ArgumentException: "Недопустимый параметр."". В окне контрольного значения при нажатии на кнопку первый и второй раз - значения одинаковые. Почему так? На что нужно обратить внимание? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 21:09 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
ferzmikk Получился такой код C# Код: c# 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.
2. Если второй раз нажать на кнопку, то появляется ошибка на строке Код: c# 1.
"System.ArgumentException: "Недопустимый параметр."". В окне контрольного значения при нажатии на кнопку первый и второй раз - значения одинаковые. Почему так? На что нужно обратить внимание?возможно толщина линии 0вая или какие то другие параметры карандаша ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 22:09 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
Если в коде закомментировать запись Код: javascript 1.
то после второго нажатия не появляется ошибка. Почему так? Можно пропускать эту запись? По логике эта запись освобождает все ресурсы, связанные с отрисовкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 22:41 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
Начало координат слева вверху. Как возможно сделать так, чтобы начало координат было слева снизу? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 23:14 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
ferzmikk, Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2019, 07:09 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
Cat2 Код: c# 1. 2. 3. 4.
Вы предлагаете в теле метода button1_Click оставить только строку panel1.Refresh();? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2019, 08:46 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
ferzmikk Получился такой код C# Код: c# 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.
2. Если второй раз нажать на кнопку, то появляется ошибка на строке Код: c# 1.
"System.ArgumentException: "Недопустимый параметр."". В окне контрольного значения при нажатии на кнопку первый и второй раз - значения одинаковые. Почему так? На что нужно обратить внимание? Потому что создаешь Graphics один раз в конструкторе класса формы, а диспозишь его при каждом нажатии кнопки. Microsoft Docs.... Therefore you cannot cache the Graphics object for reuse ... Instead, you must call CreateGraphics every time that you want to use the Graphics object, and then call Dispose when you are finished using it Почитать здесь ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2019, 11:44 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
ferzmikkCat2 Код: c# 1. 2. 3. 4.
Вы предлагаете в теле метода button1_Click оставить только строку panel1.Refresh();? Да. Именно эта команда и вызывает метод Paint ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2019, 18:20 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
Cat2Да. Именно эта команда и вызывает метод Paint То есть в заглавном топике все правильно правильно, кроме отсутствия вызова Refresh. Код: c# 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2019, 18:23 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
Код: c# 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2019, 18:33 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
Cat2, Спасибо! Задача сводится к тому, что отрезки строятся после нажатия кнопки, а не после открытия формы. Переписал код. Пока не обращайте внимание на наличие проверки textbox на заполненность. C# Код: c# 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.
1. Какую лучше делать проверку, чтобы при открытии формы не строились отрезки? Учитывая, что не заполненное TextBox не означает значение 0. Еще как вариант можно обойтись без такой проверки, если задать предопределенные значения. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
При открытии формы в Textbox отображаются предопределенные значения, но не строится отрезок. Если написать в методе Form1_Load , то тоже самое? Почему так? Как правильно написать? 2. Насколько правильно для координат точек переменные задавать тип Int, если используем объект Panel? 3. Правильно ли конвертирую из TextBox в Int , а именно, ToInt32 . Код: c# 1.
4. Начало координат начинается слева сверху. Как сделать так, чтобы начиналось слева внизу? Через RotateTransform или добавить метод, который пересчитывает точку на ординате учитывая максимальный размер ординаты? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 14:26 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
5. Заметил, что объект Panel имеет как крупное битовое изображение, то есть линия похожа на лестницу. Это особенность объекта Panel, который имеет не высокое разрешение? Или можно как то настроить? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 14:28 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
так bitmap же, хотите ровненько - переходите на векторную графику ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 15:02 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
ferzmikk5. Заметил, что объект Panel имеет как крупное битовое изображение, то есть линия похожа на лестницу. Это особенность объекта Panel, который имеет не высокое разрешение? Или можно как то настроить? Во-первых, если рисуешь в обработчике Paint, создавать Graphics не нужно. Его надо брать из e.Graphics. Диспозить в этом случае тоже не надо. Во-вторых, сглаживание включается так: Код: c# 1.
или так: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 15:45 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
Worobjoffесли рисуешь в обработчике Paint, создавать Graphics не нужно. Его надо брать из e.Graphics. Диспозить в этом случае тоже не надо.Вы предлагаете вместо такой записи Код: c# 1. 2. 3. 4. 5. 6.
так делать Код: c# 1. 2. 3. 4.
Верно? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 15:56 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
тут, по шагам разжёвано: http://csharphelper.com/blog/2018/12/let-the-user-draw-lines-in-c/ ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 16:08 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
У Panel есть возможность наносить/удалять слои с изображениями? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 17:23 |
|
Элемент формы Panel
|
|||
---|---|---|---|
#18+
ferzmikkУ Panel есть возможность наносить/удалять слои с изображениями? Нет. Можно симулировать каждый слой отдельный изображением (Bitmap) с прозрачным фоном. И выводить несколько изображений одно поверх другого (Graphics.DrawImage). ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2019, 02:28 |
|
|
start [/forum/topic.php?fid=20&msg=39843818&tid=1398854]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
180ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 290ms |
0 / 0 |