Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 | 3 |

 

  Вопрос: Сохранить графику Добавлено: 10.01.11 16:41  

Автор вопроса:  romashko1901 | ICQ: 416844272 

Ответить

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

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



Вопросов: 58
Ответов: 4255
 Профиль | | #16 Добавлено: 12.01.11 13:22
Да, это С#. Тут весь код на одной форме.. У меня VB нету, поэтому попроси чтоб помогли с переводом на твой VB

Ответить

Номер ответа: 17
Автор ответа:
 romashko1901



ICQ: 416844272 

Вопросов: 1
Ответов: 13
 Профиль | | #17 Добавлено: 12.01.11 14:41
EROS
  1. Imports System.Collections.Generic
  2. Imports System.Drawing
  3. Imports System.Drawing.Drawing2D
  4. Imports System.Windows.Forms
  5.  
  6. Namespace VbNetSample
  7.  
  8.     Partial Public Class Form1
  9.         Inherits Form
  10.         Private m_shapeManager As ShapeManager
  11.         Private m_currentColor As Color
  12.         Private m_currentShape As ShapeType
  13.         Private m_lastPoint As Point
  14.         Private m_is_pressed As Boolean
  15.         Private m_currentWidth As Single
  16.  
  17.         Public Sub New()
  18.             Initialize()
  19.         End Sub
  20.  
  21.         Private Sub Initialize()
  22.             BackColor = Color.White
  23.             DoubleBuffered = True
  24.  
  25.             m_shapeManager = New ShapeManager()
  26.             m_currentColor = Color.Blue
  27.             m_currentShape = ShapeType.Line
  28.             m_currentWidth = 10.0F
  29.         End Sub
  30.  
  31.         Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
  32.             If e.Button = MouseButtons.Left Then
  33.                 m_lastPoint = e.Location
  34.                 m_is_pressed = True
  35.             End If
  36.         End Sub
  37.  
  38.         Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs)
  39.             If e.Button = MouseButtons.Left Then
  40.                 m_is_pressed = False
  41.             End If
  42.         End Sub
  43.  
  44.         Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs)
  45.             If m_is_pressed Then
  46.                 Select Case m_currentShape
  47.                     Case ShapeType.Line
  48.                         AppendShape(New Line(m_currentColor, m_lastPoint, e.Location, m_currentWidth))
  49.                         m_lastPoint = e.Location
  50.                         Exit Select
  51.                     Case Else
  52.                         Throw New NotImplementedException()
  53.  
  54.                 End Select
  55.             End If
  56.         End Sub
  57.  
  58.         Private Sub AppendShape(ByVal shape As IShape)
  59.             m_shapeManager.Add(shape)
  60.             UpdateImage()
  61.         End Sub
  62.  
  63.         Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
  64.             MyBase.OnPaint(e)
  65.  
  66.             e.Graphics.CompositingQuality = CompositingQuality.HighQuality
  67.             e.Graphics.SmoothingMode = SmoothingMode.HighQuality
  68.  
  69.             For Each shape As IShape In m_shapeManager
  70.                 shape.Draw(e.Graphics)
  71.             Next
  72.         End Sub
  73.  
  74.         Private Sub Undo()
  75.             If m_shapeManager.Count <> 0 Then
  76.                 m_shapeManager.RemoveAt(m_shapeManager.Count - 1)
  77.                 UpdateImage()
  78.             End If
  79.         End Sub
  80.  
  81.         Private Sub UpdateImage()
  82.             Refresh()
  83.             Text = String.Format("Объектов: {0}", m_shapeManager.Count)
  84.         End Sub
  85.     End Class
  86.  
  87.  
  88.     Public Enum ShapeType
  89.         Line
  90.         Rectangle
  91.         Star
  92.         Cycle
  93.     End Enum
  94.     Public Interface IShape
  95.         Sub Draw(ByVal g As Graphics)
  96.     End Interface
  97.  
  98.     <Serializable()> _
  99.     Public Class Line
  100.         Implements IShape
  101.         Public Sub New()
  102.         End Sub
  103.         Public Sub New(ByVal color__1 As Color, ByVal begin__2 As Point, ByVal end__3 As Point, ByVal width__4 As Single)
  104.             Color = color__1
  105.             Begin = begin__2
  106.             [End] = end__3
  107.             Width = width__4
  108.         End Sub
  109.  
  110.         Public Property Color() As Color
  111.             Get
  112.                 Return m_Color
  113.             End Get
  114.             Set(ByVal value As Color)
  115.                 m_Color = Value
  116.             End Set
  117.         End Property
  118.         Private m_Color As Color
  119.         Public Property Begin() As Point
  120.             Get
  121.                 Return m_Begin
  122.             End Get
  123.             Set(ByVal value As Point)
  124.                 m_Begin = Value
  125.             End Set
  126.         End Property
  127.         Private m_Begin As Point
  128.         Public Property [End]() As Point
  129.             Get
  130.                 Return m_End
  131.             End Get
  132.             Set(ByVal value As Point)
  133.                 m_End = Value
  134.             End Set
  135.         End Property
  136.         Private m_End As Point
  137.         Public Property Width() As Single
  138.             Get
  139.                 Return m_Width
  140.             End Get
  141.             Set(ByVal value As Single)
  142.                 m_Width = Value
  143.             End Set
  144.         End Property
  145.         Private m_Width As Single
  146.  
  147.         Public Sub Draw(ByVal g As Graphics) Implements IShape.Draw
  148.             Using pen As New Pen(Color, Width)
  149.                 pen.StartCap = LineCap.Round
  150.                 pen.EndCap = LineCap.Round
  151.                 g.DrawLine(pen, Begin, [End])
  152.             End Using
  153.         End Sub
  154.  
  155.     End Class
  156.  
  157.     Public Class ShapeManager
  158.         Inherits List(Of IShape)
  159.         Public Shared Function FromFile(ByVal path As String) As ShapeManager
  160.             ' load from file
  161.             Return Nothing
  162.         End Function
  163.         Public Sub Save(ByVal path As String)
  164.             ' save to file
  165.         End Sub
  166.     End Class
  167. End Namespace


На vb перевел, теперь можете вратце объяснить что к чему?

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #18 Добавлено: 12.01.11 14:44
Ну теперь создай проэкт с 1 формой, скопируй туда код и попробуй запустить.. только Namespace у тебя другой будет..
Заработало?

Ответить

Номер ответа: 19
Автор ответа:
 romashko1901



ICQ: 416844272 

Вопросов: 1
Ответов: 13
 Профиль | | #19 Добавлено: 12.01.11 14:48
EROS пишет:
Заработало?

Нет, может на форму нужно что то добавить?
EROS пишет:
Namespace у тебя другой будет.

Какой? как называется проект?

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #20 Добавлено: 12.01.11 14:51
Нет, на форму ничего добавлять не нужно..
Namespace оставь тот который у тебя был.. т.е. вместо VbNetSample у тебя должно быть что то типа WindowsApplication1 или как то так

Ответить

Номер ответа: 21
Автор ответа:
 romashko1901



ICQ: 416844272 

Вопросов: 1
Ответов: 13
 Профиль | | #21 Добавлено: 12.01.11 14:52
На всякий случай даю ссылку на конвертер кода
http://www.developerfusion.com/tools/convert/csharp-to-vb/

Ответить

Номер ответа: 22
Автор ответа:
 romashko1901



ICQ: 416844272 

Вопросов: 1
Ответов: 13
 Профиль | | #22 Добавлено: 12.01.11 14:59
EROS пишет:
Namespace оставь тот который у тебя был.. т.е. вместо VbNetSample у тебя должно быть что то типа WindowsApplication1 или как то так

Когда создаю новый проект, появляется окно с формой вхожу в режим кода(F7) там есть
  1. Public Class Form1
  2.  
  3. End Class

и больше ничего, заменяю все тем, что Вы написали - запускается программа и все. кликаю, вожу мышкой и ничего не появляется. пробывал namespace заменить на WindowsApplication1 то же самое...что то не могу понять как использовать теперь эти классы?

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #23 Добавлено: 12.01.11 17:19
блин,гребаный ваш VB.. Народ, у кого есть VB? Гляньте, что там в коде наконвертило не так и почему не запускается..
Когда создаю новый проект, появляется окно с формой вхожу в режим кода(F7) там есть


хм.. а ваще это странно, по идее должно быть еще как минимум Inherits Form и Partial

Ответить

Номер ответа: 24
Автор ответа:
 romashko1901



ICQ: 416844272 

Вопросов: 1
Ответов: 13
 Профиль | | #24 Добавлено: 12.01.11 18:39
EROS пишет:
Inherits Form и Partial

Может потому что у меня VB.Net 2010, либо потому что не C#?

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #25 Добавлено: 12.01.11 18:58
Нет, это потому что у кого то руки кривые..

Ответить

Номер ответа: 26
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #26
Добавлено: 12.01.11 21:13
  1. Imports System.Collections.Generic
  2.  
  3. Imports System.Drawing
  4.  
  5. Imports System.Drawing.Drawing2D
  6.  
  7. Imports System.Windows.Forms
  8.  
  9.  
  10. Public Class Form1
  11.  
  12.     Inherits Form
  13.  
  14.     Private m_shapeManager As ShapeManager
  15.  
  16.     Private m_currentColor As Color
  17.  
  18.     Private m_currentShape As ShapeType
  19.  
  20.     Private m_lastPoint As Point
  21.  
  22.     Private m_is_pressed As Boolean
  23.  
  24.     Private m_currentWidth As Single
  25.  
  26.  
  27.     Public Sub New()
  28.  
  29.         Initialize()
  30.  
  31.     End Sub
  32.  
  33.  
  34.     Private Sub Initialize()
  35.  
  36.         BackColor = Color.White
  37.  
  38.         DoubleBuffered = True
  39.  
  40.  
  41.         m_shapeManager = New ShapeManager()
  42.  
  43.         m_currentColor = Color.Blue
  44.  
  45.         m_currentShape = ShapeType.Line
  46.  
  47.         m_currentWidth = 10.0F
  48.  
  49.     End Sub
  50.  
  51.  
  52.     Protected Sub _OnMouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles MyBase.MouseDown
  53.  
  54.         If e.Button = MouseButtons.Left Then
  55.  
  56.             m_lastPoint = e.Location
  57.  
  58.             m_is_pressed = True
  59.  
  60.         End If
  61.  
  62.     End Sub
  63.  
  64.  
  65.     Protected Sub _OnMouseUp(ByVal sender As Object, ByVal e As MouseEventArgs) Handles MyBase.MouseUp
  66.  
  67.         If e.Button = MouseButtons.Left Then
  68.  
  69.             m_is_pressed = False
  70.  
  71.         End If
  72.  
  73.     End Sub
  74.  
  75.  
  76.     Protected Sub _OnMouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles MyBase.MouseMove
  77.  
  78.  
  79.         If m_is_pressed Then
  80.  
  81.             Select Case m_currentShape
  82.  
  83.                 Case ShapeType.Line
  84.  
  85.                     AppendShape(New Line(m_currentColor, m_lastPoint, e.Location, m_currentWidth))
  86.  
  87.                     m_lastPoint = e.Location
  88.  
  89.                     Exit Select
  90.  
  91.                 Case Else
  92.  
  93.                     Throw New NotImplementedException()
  94.  
  95.  
  96.             End Select
  97.  
  98.         End If
  99.  
  100.     End Sub
  101.  
  102.  
  103.     Private Sub AppendShape(ByVal shape As IShape)
  104.  
  105.         m_shapeManager.Add(shape)
  106.  
  107.         UpdateImage()
  108.  
  109.     End Sub
  110.  
  111.     Private Sub rightclick(ByVal sender As Object, ByVal e As MouseEventArgs) Handles MyBase.MouseClick
  112.         If e.Button = Windows.Forms.MouseButtons.Right Then
  113.             Me.Undo()
  114.         End If
  115.     End Sub
  116.  
  117.     Protected Sub _OnPaint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles MyBase.Paint
  118.  
  119.         'MyBase.OnPaint(e)
  120.  
  121.  
  122.         e.Graphics.CompositingQuality = CompositingQuality.HighQuality
  123.  
  124.         e.Graphics.SmoothingMode = SmoothingMode.HighQuality
  125.  
  126.  
  127.         For Each shape As IShape In m_shapeManager
  128.  
  129.             shape.Draw(e.Graphics)
  130.  
  131.         Next
  132.  
  133.     End Sub
  134.  
  135.  
  136.     Private Sub Undo()
  137.  
  138.         If m_shapeManager.Count <> 0 Then
  139.  
  140.             m_shapeManager.RemoveAt(m_shapeManager.Count - 1)
  141.  
  142.             UpdateImage()
  143.  
  144.         End If
  145.  
  146.     End Sub
  147.  
  148.  
  149.     Private Sub UpdateImage()
  150.  
  151.         Refresh()
  152.  
  153.         Text = String.Format("Объектов: {0}", m_shapeManager.Count)
  154.  
  155.     End Sub
  156.  
  157. End Class
  158.  
  159.  
  160.  
  161. Public Enum ShapeType
  162.  
  163.     Line
  164.  
  165.     Rectangle
  166.  
  167.     Star
  168.  
  169.     Cycle
  170.  
  171. End Enum
  172.  
  173. Public Interface IShape
  174.  
  175.     Sub Draw(ByVal g As Graphics)
  176.  
  177. End Interface
  178.  
  179. <Serializable()> Public Class Line
  180.  
  181.     Implements IShape
  182.  
  183.     Public Sub New()
  184.  
  185.     End Sub
  186.  
  187.     Public Sub New(ByVal color__1 As Color, ByVal begin__2 As Point, ByVal end__3 As Point, ByVal width__4 As Single)
  188.  
  189.         Color = color__1
  190.  
  191.         Begin = begin__2
  192.  
  193.         [End] = end__3
  194.  
  195.         Width = width__4
  196.  
  197.     End Sub
  198.  
  199.  
  200.     Public Property Color() As Color
  201.  
  202.         Get
  203.  
  204.             Return m_Color
  205.  
  206.         End Get
  207.  
  208.         Set(ByVal value As Color)
  209.  
  210.             m_Color = value
  211.  
  212.         End Set
  213.  
  214.     End Property
  215.  
  216.     Private m_Color As Color
  217.  
  218.     Public Property Begin() As Point
  219.  
  220.         Get
  221.  
  222.             Return m_Begin
  223.  
  224.         End Get
  225.  
  226.         Set(ByVal value As Point)
  227.  
  228.             m_Begin = value
  229.  
  230.         End Set
  231.  
  232.     End Property
  233.  
  234.     Private m_Begin As Point
  235.  
  236.     Public Property [End]() As Point
  237.  
  238.         Get
  239.  
  240.             Return m_End
  241.  
  242.         End Get
  243.  
  244.         Set(ByVal value As Point)
  245.  
  246.             m_End = value
  247.  
  248.         End Set
  249.  
  250.     End Property
  251.  
  252.     Private m_End As Point
  253.  
  254.     Public Property Width() As Single
  255.  
  256.         Get
  257.  
  258.             Return m_Width
  259.  
  260.         End Get
  261.  
  262.         Set(ByVal value As Single)
  263.  
  264.             m_Width = value
  265.  
  266.         End Set
  267.  
  268.     End Property
  269.  
  270.     Private m_Width As Single
  271.  
  272.  
  273.     Public Sub Draw(ByVal g As Graphics) Implements IShape.Draw
  274.  
  275.         Using pen As New Pen(Color, Width)
  276.  
  277.             pen.StartCap = LineCap.Round
  278.  
  279.             pen.EndCap = LineCap.Round
  280.  
  281.             g.DrawLine(pen, Begin, [End])
  282.  
  283.         End Using
  284.  
  285.     End Sub
  286.  
  287.  
  288. End Class
  289.  
  290.  
  291. Public Class ShapeManager
  292.  
  293.     Inherits List(Of IShape)
  294.  
  295.     Public Shared Function FromFile(ByVal path As String) As ShapeManager
  296.  
  297.         ' load from file
  298.  
  299.         Return Nothing
  300.  
  301.     End Function
  302.  
  303.     Public Sub Save(ByVal path As String)
  304.  
  305.         ' save to file
  306.  
  307.     End Sub
  308.  
  309. End Class

живое

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #27 Добавлено: 12.01.11 21:19
Работает? Рисует на форме при зажатой левой клавише?

Ответить

Номер ответа: 28
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #28
Добавлено: 12.01.11 21:36
а як же :) просто кто-то хендлеры не прикрутил к процедурам, и причитает, что код дохлый. Ну еще я на правую кнопку повесил Undo а дальше лень стало...

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #29 Добавлено: 12.01.11 21:39
Ну хоть у кого то руки из нужного места растут.. Спасибо.

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #30 Добавлено: 12.01.11 22:02
просто кто-то хендлеры не прикрутил к процедурам

эээ.. я использовал перегруженные методы и конструкции вида
  1. Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)

по идее должны и так работать без всяких хендлеров

Ответить

Страница: 1 | 2 | 3 |

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



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