трабла с выводом графики

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

AnarCky
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 229
Зарегистрирован: 20.11.2006 (Пн) 20:12
Откуда: Россия, Екатеринбург.

трабла с выводом графики

Сообщение AnarCky » 08.12.2007 (Сб) 20:27

в следующем коде написал ошибку: "В экземпляре объекта не задана ссылка на объект"
Код: Выделить всё

    Private gr As Graphics
    Const infFontName As String = "Franklin Gothic Medium"
    Private infoFont As New Font(infFontName, 14, FontStyle.Regular)

    Private Sub ShowInfo(ByVal sender As System.Object, ByVal e As System.EventArgs)
        gr.DrawString("Информация: ", infoFont, Brushes.Black, 150, 30)                  *
    End Sub


gr = Nothing, посмотрел во время выполнения.
а вот чем ее надо инициализировать? подскажите плзз
Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера?..

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 09.12.2007 (Вс) 1:12

а вот чем ее надо инициализировать?

У всех элементов управления есть функция CreateGraphics.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

AnarCky
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 229
Зарегистрирован: 20.11.2006 (Пн) 20:12
Откуда: Россия, Екатеринбург.

Сообщение AnarCky » 09.12.2007 (Вс) 7:21

Точно! то-то я помню что-то было такое =) Спасибо!
А вот еще вопрос: код работает исправно, но надписи не видно. Значит ли это, что она рисуется, просто где-то позади остальных контролов, или здесь что-то другое?
Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера?..

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 09.12.2007 (Вс) 15:06

"Говорите точно, сколько вешать?" ))
Без кода не скажу. :P
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

AnarCky
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 229
Зарегистрирован: 20.11.2006 (Пн) 20:12
Откуда: Россия, Екатеринбург.

Сообщение AnarCky » 09.12.2007 (Вс) 16:35

Код: Выделить всё

    Private gr As Graphics = CreateGraphics()
    Const infFontName As String = "Franklin Gothic Medium"
    Private infoFont As New Font(infFontName, 14, FontStyle.Regular)

    Private Sub ShowInfo(ByVal sender As System.Object, ByVal e As System.EventArgs)
        gr.DrawString("Информация: ", infoFont, Brushes.Black, 150, 30)                  *
    End Sub
Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера?..

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 09.12.2007 (Вс) 23:06

Код: Выделить всё
Private Sub ShowInfo(ByVal sender As System.Object, ByVal e As System.EventArgs)

Что это за обработчик. Либо он у тебя не подписан ни на одно событие(отсутствует Handles), либо ты привел неполный код, но тогда какой ответ ты ожидаешь услышать? Нужен ПОЛНЫЙ код. Если кода много создай тестовый проект.


Add: работает
Код: Выделить всё
Public Class Form1
  Private gr As Graphics = CreateGraphics()
  Const infFontName As String = "Franklin Gothic Medium"
  Private infoFont As New Font(infFontName, 14, FontStyle.Regular)

  Private Sub ShowInfo(ByVal sender As System.Object, ByVal e As System.EventArgs)
    gr.DrawString("Информация: ", infoFont, Brushes.Black, 150, 30)
  End Sub

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    ShowInfo(sender, e)
'or
'   ShowInfo(Nothing, Nothing)

  End Sub
End Class
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

AnarCky
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 229
Зарегистрирован: 20.11.2006 (Пн) 20:12
Откуда: Россия, Екатеринбург.

Сообщение AnarCky » 10.12.2007 (Пн) 18:23

Подписан, подписан... =) я его присоединял из другой процедуры к новосозданному контролу AddHandler`ом... и получается явно у меня процедура нигде не фигурирует. А в самой строчке где AddHandler, там сигнатуру процедуры написать нельзя. Что делать?

код:
Код: Выделить всё

    Private gr As Graphics = CreateGraphics()
    Const infFontName As String = "Franklin Gothic Medium"
    Private infoFont As New Font(infFontName, 14, FontStyle.Regular)

    Private Sub ShowInfo(ByVal sender As System.Object, ByVal e As System.EventArgs)
        gr.DrawString("Информация: ", infoFont, Brushes.Black, 150, 30)                  *
    End Sub

    Private Sub CreatingTable(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

            AddHandler c.DoubleClick, AddressOf CEC_DblClick
            AddHandler c.DoubleClick, AddressOf ShowInfo

     End Sub

     'Между прочим первая процедура (CEC_DblClick)
     'работает человечески и без передачи аргументов, хотя
     'набор параметров тот же...

    Public Sub CEC_DblClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Table = GetTableScreenShot()
        If sender.showen = 0 Then
            sender.Showen = 1
            Call Hide_Show(False)
            With pcbFon
                .BringToFront()
                .Image = Table
                .Image = MakeTransparent(pcbFon.Image, 0.5!)    'сделать наполовину прозрачным
                .SizeMode = PictureBoxSizeMode.StretchImage     'вписать рисунок в PictureBox
                .Visible = True
                .Width = 608
                .Height = 414
                .Left = 403
                .Top = 275
            End With
        Else
            sender.showen = 0
            With pcbFon
                .SendToBack()
                .Visible = False
            End With
            Call Hide_Show(True)
        End If
    End Sub

Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера?..

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 10.12.2007 (Пн) 19:38

А в самой строчке где AddHandler, там сигнатуру процедуры написать нельзя.
Это как?

Код: Выделить всё
sender.Showen = 1
И что ты желал от этой строки? Тебе нужно явно приводить к определенному типу(ctype), а Object не обладает свойством Showen.

И напоследок... Если я тебе вырежу из большого проекта маленький кусочек кода, с кучей свойств, обьектов, методов, которые ни о чем тебе не говорят(и так несколько раз подряд), и попрошу тебя помочь мне.... Что ты мне на это ответишь? И ответишь ли?
Такое впечатление что ты меня не слышишь. Или не желаешь.

Нужен ПОЛНЫЙ код. Если кода много создай тестовый проект.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

AnarCky
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 229
Зарегистрирован: 20.11.2006 (Пн) 20:12
Откуда: Россия, Екатеринбург.

Сообщение AnarCky » 10.12.2007 (Пн) 20:38

для вящей ясности см вложенный файл

код который касается работы данной функции, поверь на слово, я выложил весь (а именно: объявление переменных и самой функции, вызов).
что касается процедуры CEC_DblClick, то ее код я привел, для того чтобы показать, что эта функция вызывается и работает без указания аргументов, но с той же сигнатурой, что и ShowInfo... У меня sender в этом случае - собственный контрол, у которого есть свойство Showen, и вызывается это событие точно так же - через AddHandler, и это в коде я указал. Я не счел нужным пояснять все функции, свойства и т.д., т.к. это не имеет отношения к проблеме.
Вложения
cod.png
ошибка в строчке с AddHandler
cod.png (4 Кб) Просмотров: 663
Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера?..


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 109

    TopList