Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Преобразование типов Добавлено: 12.02.07 20:36  

Автор вопроса:  -АлександР- | Web-сайт: sham.clan.su
Как преобразовать тип brush в Color и наоборот... и их же в pen...

Я уже замучался...

CType не рулит
            e.Graphics.FillRectangle(CType(Prog.ColorList(e.Index), Brush), e.Bounds)


"cannot"

здесь Prog.ColorList - это массив колоров

Module Module1
    Class ProgSettings

        'массив цветов, находящихся на данный момент в списке
        Public ColorList(11) As Color

        'этот саб восстанавливает цвета по умолчанию
        Public Sub InitColorList()
            ColorList(0) = Color.SlateGray
            ColorList(1) = Color.Black
            ColorList(2) = Color.Blue
            ColorList(3) = Color.Red
            ColorList(4) = Color.Green
            ColorList(5) = Color.Yellow
            ColorList(6) = Color.YellowGreen
            ColorList(7) = Color.Brown
            ColorList(8) = Color.Teal
            ColorList(9) = Color.Silver
            ColorList(10) = Color.Gold
            ColorList(11) = Color.White
        End Sub

    End Class

End Module


Заранее спасибо!

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #1 Добавлено: 12.02.07 21:17
Я мог бы написать код... но не буду.. Вместо этого дам несколько подсказок указывающих на твои ошибки, думаю тебе полезней будет самому разобраться..
1. Класс Brush, к типу которого ты пытаешься привести объявлен как MustInherit.. Отсюда делай вывод..
2. Brush - есть объект.. Где ты его создаешь? Ты про ключевое слово New что нибудь слышал?
3. Приведение к типу (CType) в данном контексте совершенно не уместно..

Это все есть основы ООП.. о которых я говорил ранее.. так что повторю еще раз.. учи(читай) мат.часть! :-))

Когда разберешься с этими ошибками и поймешь что к чему, то с Pen вопросов возникнуть не должно..

P/S/ Если уже совсем невмоготу станет - свисти, объясню..

Ответить

Номер ответа: 2
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #2 Добавлено: 13.02.07 12:50
Вот кусок кода из одного моего старого проекта.. как его юзать, я думаю, разберешься.. Там же найдешь ответ на свой вопрос..

Public Interface IColorSchema

    '// Events
    Event ColorSchemaChaged As EventHandler

    '// Property's
    Property BackColor() As Color
    Property ForeColor() As Color
    Property BorderColor() As Color

    '// Sub's
    Sub Save()
    Sub Load()

End Interface

Public Enum EColorSchema
    BackColor = 0
    ForeColor = 1
    BorderColor = 2
End Enum

Public Class ColorSchema
    Implements IColorSchema

    Public Event ColorSchemaChanged As EventHandler Implements IColorSchema.ColorSchemaChaged


    Private _defaultColors() As Color

    Public Sub New()

        '// Initialize array of colors
        ReDim _defaultColors(System.Enum.GetNames(GetType(EColorSchema)).Length - 1)

        '// Initialize shcema
        _defaultColors(EColorSchema.BackColor) = Color.Black
        _defaultColors(EColorSchema.ForeColor) = Color.Maroon
        _defaultColors(EColorSchema.BorderColor) = Color.DarkOrange

    End Sub

    Public Property BackColor() As Color Implements IColorSchema.BackColor
        Get
            Return _defaultColors(EColorSchema.BackColor)
        End Get
        Set(ByVal value As Color)
            SetProperty(EColorSchema.BackColor, value)
        End Set
    End Property

    Public Property ForeColor() As Color Implements IColorSchema.ForeColor
        Get
            Return _defaultColors(EColorSchema.ForeColor)
        End Get
        Set(ByVal value As Color)
            SetProperty(EColorSchema.ForeColor, value)
        End Set
    End Property

    Public Property BorderColor() As Color Implements IColorSchema.BorderColor
        Get
            Return _defaultColors(EColorSchema.BorderColor)
        End Get
        Set(ByVal value As Color)
            SetProperty(EColorSchema.BorderColor, value)
        End Set
    End Property

    Public ReadOnly Property Brush(ByVal _property As EColorSchema) As SolidBrush
        Get
            Return New SolidBrush(_defaultColors(_property))
        End Get
    End Property

    Public Sub Load() Implements IColorSchema.Load
        '// load schema from file
    End Sub

    Public Sub Save() Implements IColorSchema.Save
        '// save schema to file
    End Sub

    Protected Overridable Sub OnColorSchemaChanged()
        RaiseEvent ColorSchemaChanged(Me, EventArgs.Empty)
    End Sub

    Private Sub SetProperty(ByVal _property As EColorSchema, _
                            ByVal value As Color)

        If _defaultColors(_property) <> value Then
            _defaultColors(_property) = value
            OnColorSchemaChanged()
        End If

    End Sub

End Class

Ответить

Номер ответа: 3
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #3
Добавлено: 13.02.07 19:50
Спасибо, EROS
снова ты меня выручил))


ларчик так просто открывался...
            e.Graphics.FillRectangle(New SolidBrush(ProgS.COlorList(e.Index)), e.Bounds)

Ответить

Номер ответа: 4
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #4 Добавлено: 13.02.07 22:11
ларчик так просто открывался.

ну вот видишь как все просто.. ))) А ты над CType глумился.. причем в извращенной форме..

Ответить

Номер ответа: 5
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #5
Добавлено: 13.02.07 22:42
причем в извращенной форме..
:-))

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам