powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проблема с графикой
19 сообщений из 19, страница 1 из 1
Проблема с графикой
    #39761892
Ломерт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте все. Это сообщение от новичка. Я только начал изучение Visual Basic 2017 и сразу же столкнулся с проблемой. Я создал проект классического приложения Windows. Моя простенькая программка должна просто выводить прямоугольную форму без рамки с начерченной диагональю. И форма выводится, но чистая, без диагонали. В программе вроде всё правильно. Ошибку не вижу. Подскажите в чём проблема. Я уже обращался с этой просьбой на другой форум программистов и мне ничего конкретного не сказали. Я бы приложил архив со своим проектом, но он больше 150 Кб. И поэтому привожу свой код.
Стартовый модуль:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Module Base
    ' Основной модуль. Основа всего.
    Public Zas As New Start ' Объект первой формы. Заставка программы.

    Sub Main() ' Стартовая процедура. Основа всего.
        MVars.SHeight = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height ' Получаю высоту экрана.
        MVars.SWidth = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width ' Получаю ширину экрана.
        Zas.Height = CInt(MVars.SHeight * 0.6) ' Устанавливаю высоту заставки.
        Zas.Width = CInt(MVars.SWidth * 0.6) ' Устанавливаю ширину заставки.
        Zas.BackColor = System.Drawing.Color.White ' Устанавливаю белый цвет формы.
        Zas.Show() ' Вывожу заставку программы.
        System.Threading.Thread.Sleep(10000)  ' Делаю десятисекундную задержку.
    End Sub
End Module


Вспомогательный модуль:
Код: vbnet
1.
2.
3.
4.
5.
Module MVars
    ' Модуль хранения математических переменных.
    Public SHeight As Integer ' Переменная хранения высоты экрана.
    Public SWidth As Integer ' Переменная хранения ширины экрана.
End Module


Класс формы:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Public Class Start

    Private Sub Start_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub
    Private Sub Start_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        ' Dim g As System.Drawing.Graphics = Me.CreateGraphics
        Dim FPn As New System.Drawing.Pen(Drawing.Color.FromArgb(255, 0, 0, 0), 1)
        e.Graphics.SmoothingMode = Drawing.Drawing2D.SmoothingMode.AntiAlias
        e.Graphics.DrawLine(FPn, 0, 0, Me.Width - 1, Me.Height - 1)
    End Sub
End Class


Помогите разобраться с ошибкой. Пожалуйста.

Модератор: Тема перенесена из форума "Visual Basic".
...
Рейтинг: 0 / 0
Проблема с графикой
    #39761896
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Что-то тут у Вас наворочено не пойми чего.
Все же попробуйте после "e.Graphics.DrawLine(FPn, 0, 0, Me.Width - 1, Me.Height - 1)"

сделать this.Refresh()
...
Рейтинг: 0 / 0
Проблема с графикой
    #39761898
Ломерт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2, тут всё просто. Узнаю размер экрана в пикселях по длине и ширине и формирую форму без рамки площадью 60% от экранной площади. И вывожу форму в центре экрана. Некоторые свойства формы установлены в конструкторе форм. Пауза для того, чтобы форма хоть какое-то время жила на экране. Без паузы приложение тут же закрывается, мигнув формой. Попробовал ваш совет. Слова this вообще нет. Но сработало Me.Refresh() . Сработало, но результат остался прежний.
...
Рейтинг: 0 / 0
Проблема с графикой
    #39761899
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ломерт,
Делайте по шагам:
- форма по умолчанию с линией
- форма с вашим размером
- форма без рамки.
И т.д.
...
Рейтинг: 0 / 0
Проблема с графикой
    #39761903
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ЛомертCat2, тут всё просто. Узнаю размер экрана в пикселях по длине и ширине и формирую форму без рамки площадью 60% от экранной площади. И вывожу форму в центре экрана. Некоторые свойства формы установлены в конструкторе форм. Пауза для того, чтобы форма хоть какое-то время жила на экране. Без паузы приложение тут же закрывается, мигнув формой. Попробовал ваш совет. Слова this вообще нет. Но сработало Me.Refresh() . Сработало, но результат остался прежний.
Да я вижу, что просто, но Вы своим говнокодом усложнили все на порядок.
Нахр..., извиняюсь, зачем Вы устанавливает размер заставки в зависимости от размера экрана?
Что бы гордая надпись "Ломерт (с)" едва виделась в левом верхнем углу?
Это не модно сейчас. Сейчас модно ил бе ставки ии показывать заставку ровно столько, сколько идет инициализация и загрузка данных. И размер примерно 400 на 300
...
Рейтинг: 0 / 0
Проблема с графикой
    #39761904
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Ломерт.
Давайте упрощать задачу. Без заставки сначала. Просто попробуйте нарисовать эту диагональ на главной форме.
Как правильно показывать заставку я вам потом покажу
...
Рейтинг: 0 / 0
Проблема с графикой
    #39761905
Ломерт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123, ваш алгоритм заведомо нерабочий. Если сразу сделать форму по умолчанию, то потом придётся перерисовывать линию под мой размер. Да и вывод такой формы будет горбатым: сначала форма по умолчанию с линией, потом требуемая форма. У меня задача кое-что начертить на форме. Но я застрял на элементарном. И что делать не знаю.
...
Рейтинг: 0 / 0
Проблема с графикой
    #39761907
Ломерт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2, я имею право сам решать какого размера должна быть заставка. И как она должна выглядеть на разных экранах. На форме должно кое-что начертиться. И это должно масштабироваться в зависимости от экрана. Я завис на элементарном. А что модно, что не модно, меня не касается. Каждый сам решает ориентироваться ему на моду или нет.
...
Рейтинг: 0 / 0
Проблема с графикой
    #39761909
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Ломерт,
да без проблем, решайте все сами
...
Рейтинг: 0 / 0
Проблема с графикой
    #39761915
Ломерт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем так. Я убрал все свои навороты и оставил только это:
Код: vbnet
1.
2.
3.
4.
5.
Private Sub Start_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        Dim FPn As New System.Drawing.Pen(Drawing.Color.FromArgb(255, 0, 0, 0), 1)
        e.Graphics.SmoothingMode = Drawing.Drawing2D.SmoothingMode.AntiAlias
        e.Graphics.DrawLine(FPn, 0, 0, Me.Width - 1, Me.Height - 1)
    End Sub


И всё равно выводится чистая форма. Что за ёлки-палки?
...
Рейтинг: 0 / 0
Проблема с графикой
    #39761916
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ломерт,
Сколько вам лет, что не научили следовать советам при обучении?
Удачи!
...
Рейтинг: 0 / 0
Проблема с графикой
    #39761960
Ломерт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем я провозился со своим проектом четыре дня. В чём корень проблемы так и не выяснил. Но сделал следующие выводы и наблюдения, обратившись за помощью на двух форумах:
- я в своей простенькой программке наваял что-то такое чего никто не может понять. Одним словом - программисты;
- мне предлагали создать новый проект и повторить всё в нём. Очень логично;
- на одном форуме даже не распознали классическое приложение Windows, хотя я им выслал сам проект. И предложили альтернативный вариант WindowsForms с кучей полей ввода и кнопочек разных;
- здесь мне предложили изучить теорию модных заставок. Словно я не насмотрелся на них в чужих программах;
- здесь программистам пришлось на пальцах объяснять что я наваял. У меня невероятно сложный код;
- здесь мне предложили пошаговый метод повторения моего проекта. Немыслимо конструктивно;
- когда я отклонил все "невероятно конструктивные решения" на меня ещё попытались обидеться.
В итоге: пришёл к выводу что просить помощи у программистов заведомо бессмысленное занятие. Получить её в принципе невозможно. Зато хлама вывалят по самые уши.
Спасибо за всё, добрые люди. Я очень благодарен вам за вашу бесценную помощь. Низкий вам всем поклон.
...
Рейтинг: 0 / 0
Проблема с графикой
    #39761968
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛомертВ общем
...
Рейтинг: 0 / 0
Проблема с графикой
    #39761969
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Ломерт,

Рекомендую обратится на третий форум. Вас пытались наставить на путь истинный.
Ваш "невероятно сложный код" реализуется в два притопа, три прихлопа.

Во вложении экзешник, который 5 секунд показывает заставку с диагональной линией, а потом показывает главную форму.
Даю честное слово, что он не несет деструктивных функций, а делает только то, что описано
...
Рейтинг: 0 / 0
Проблема с графикой
    #39761971
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛомертНо сделал следующие выводы и наблюдения, обратившись за помощью на двух форумах:да, наблюдения такие
а) не смог найти подходящий подфорум для выкладывания проекта (в подфоруме Visual Basic не смог прочесть прикрепленный топик ПРАВИЛА ФОРУМА. Прочтите перед тем как задавать вопрос! )
б) не смог уместить пустой проект в 150кб или хотя бы выложить его на файлообменник (соответственно, кому охота воспроизводить это у себя, да еще и на VB)
в) выбрал Visual Basic для того, чтобы писать на .NET (статистику не смотрел, но думаю его используют менее 1% от всех пишущих на .NET (а стало быть и упомянутые программисты тоже))
г) в чем разница между "классическим приложением Windows" и "альтернативным вариантом WindowsForms"? Или ты попытался запустить вышеуказанный код на WPF? И почему бы не проанализировать то, что предложили?
...
Рейтинг: 0 / 0
Проблема с графикой
    #39761972
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, причина того, что ты не видишь линию - ты просто не даешь ей отрисоваться
Код: vbnet
1.
2.
		Zas.Show() ' Вывожу заставку программы.
		System.Threading.Thread.Sleep(10000)  ' Делаю десятисекундную задержку.

Ты вывел форму и тут же завесил поток пользовательского интерфейса на 10 секунд. Если подождать 10 секунд или убрать задержку - линия будет нарисована
...
Рейтинг: 0 / 0
Проблема с графикой
    #39761975
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProКстати, причина того, что ты не видишь линию - ты просто не даешь ей отрисоваться
... Если подождать 10 секунд или убрать задержку - линия будет нарисована
Не вчитывался, но рисовать-то наверно в событии типа OnDraw надо а не в лоб, чтоб как ластиком не стиралось и т.п.
...
Рейтинг: 0 / 0
Проблема с графикой
    #39761998
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Не вчитывался, но рисовать-то наверно в событии типа OnDraw надо а не в лоб, чтоб как ластиком не стиралось и т.п.Не знаю, я не знаток винформ. В данном случае вообще смешно выглядит, когда пытаешься изменить размер формы - рисуется куча линий. Но автору ведь не надо знать как правильно, ему надо узнать, почему его код не работает.
...
Рейтинг: 0 / 0
Проблема с графикой
    #39762042
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как жаль. что наш уровень слишком мал, чтоб понять высокий полет мысли автора
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проблема с графикой
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]