Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

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

 

  Вопрос: связать x2 с скроллбаром , помогите! Добавлено: 04.10.10 23:55  

Автор вопроса:  Nezhniy | Web-сайт: www.helpim.ru | ICQ: 419841508 
Всем здрасьте . Задача: построить линию на panel1 так чтобы координаты 2й точки зависили от значения вертикального скроллбара ( y значение точки) и горизонтального скроллбара (х значение точки).

 ' Create pen.
    Dim blackPen As New Pen(Color.Black, 3)

    ' Create points that define line.
    Dim point1 As New Point(100, 100)
    Dim point2 As New Point(500, 100)

    ' Draw line to screen.
    e.Graphics.DrawLine(blackPen, point1, point2)

 -это код создания линии, его я сунул в panel1_paint , линия успешно строится , а вот как связать с значениями скроллбарми , не получается ( P.S пробовал объявлять

Dim blackPen As New Pen(Color.Black, 3)
    
    Dim point1 As New Point(100, 100)
    Dim point2 As New Point(500, 100)

 в код самой формы , тогда в коде прогрессбара появляется свойство point1.x и point.y , но опять же , даже когда пишу код point1.x=VScrollBar1.value все равно линия почему то не двигается вместе с передвижением ползунка( объясните пожалуйста почему , в том же powerpacks 2.0 все получается (там есть объект lineshape, я сделал все также как описано сверху , там все работает , но проблема в том что при работе с моей программой пользователю надо будет качать и устанавливать powerpacks 2.0) Сильно не ругайте , если что то делаю глупо.

Ответить

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

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



ICQ: 419841508 

Вопросов: 9
Ответов: 100
 Web-сайт: www.helpim.ru
 Профиль | | #1
Добавлено: 05.10.10 08:54
извиняюсь там где я написал прогрессбар , я ступил , имею ввиду скроллбар : D

Ответить

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #2 Добавлено: 05.10.10 10:11
А Power Pack большой разве? Можно включить в ресурсы и загружать при запуске

Ответить

Номер ответа: 3
Автор ответа:
 Nezhniy



ICQ: 419841508 

Вопросов: 9
Ответов: 100
 Web-сайт: www.helpim.ru
 Профиль | | #3
Добавлено: 05.10.10 12:10
нет, power packs весит мб 3 , а как сделать чтобы пользователю не надо было устанавливать power packs , это возможно?

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #4 Добавлено: 05.10.10 13:00
  1. Dim point1 As New Point(100, 200)
  2. Dim point2 As New Point(HScrollBar1.Value, VScrollBar1.Value)

  1. DrawLine...

Ответить

Номер ответа: 5
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #5 Добавлено: 05.10.10 13:49
Его и не надо устанавливать, просто ложишь сборку рядом с exe-файлом и все дела. Или, как я сказал, сборку включить в ресурсы и загружать при запуске из ресурсов

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #6 Добавлено: 05.10.10 20:04
Его и не надо устанавливать, просто ложишь сборку рядом с exe-файлом и все дела.

Нах ему powerpacks вообще сдался?? Какие ресурсы???

Ответить

Номер ответа: 7
Автор ответа:
 Nezhniy



ICQ: 419841508 

Вопросов: 9
Ответов: 100
 Web-сайт: www.helpim.ru
 Профиль | | #7
Добавлено: 05.10.10 21:02
1.
AgentFire пишет:
   1. Dim point1 As New Point(100, 200)
   2. Dim point2 As New Point(HScrollBar1.Value, VScrollBar1.Value)


   1. DrawLine...

 

это я уже попробовал сразу как начал использовать класс graphics . Создавал массив, но
  1. Dim point2 As New Point(HScrollBar1.Value, VScrollBar1.Value)

из за этой строки выбивается "Ошибка при создании формы. См. Exception.InnerException. Ошибка: Object reference not set to an instance of an object."


2. Про ресурсы ,честно, я сам не понял и про сборку рядом с ехе... я так понимаю под словом сборка ты имеешь ввиду исталлер power packs 2.0 от майкрософта? без установки он выбивает ошибку при включении уже скомпилированной моей проги "InvalidOperationException" и говорит типа отправить или не отправить отчет в майкрософт. Вот поэтому чтобы не @%$#& мозг этими powerpack'ами я хотел сделать тоже самое, только через graphics . А в powerpacks там есть объект lineshape (линия) , там можно делать с двумя ее составляющими точками (начало и конец ) что угодно и связывать их с чем угодно . Это удобно.
P.S кому не лень помочь , вот архив , там все есть , моя программа , исходники + powerpacks 2.0 инсталлер (если нужен ) и заплатка на .net framework 2.0 (если программа даже после установки powerpacks 2.0 выбивает ошибку InvalidOperationException, это точно исправит ) -> http://newcelebrity.ru/help.rar . Просто у меня это одна из программ которую надо будет представлять как проект , а если там будут заморочки с пауэрпаками и тд , будет худо:(

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #8 Добавлено: 05.10.10 21:19
да блин.. там всего то 5 строчек кода...

Ответить

Номер ответа: 9
Автор ответа:
 Nezhniy



ICQ: 419841508 

Вопросов: 9
Ответов: 100
 Web-сайт: www.helpim.ru
 Профиль | | #9
Добавлено: 05.10.10 21:52
еще бы кто нить мне написал бы их (

Ответить

Номер ответа: 10
Автор ответа:
 Nezhniy



ICQ: 419841508 

Вопросов: 9
Ответов: 100
 Web-сайт: www.helpim.ru
 Профиль | | #10
Добавлено: 05.10.10 23:15
да и еще у мя появилась кое какая задумка ,не знаю бредовая ли она , написать цикл чтобы при каждом новом значении например вертикального скроллбара (связанного с y значением точки ) точка point2 стиралась и потом снова создавалась только с уже с point2.y=vscrollbar1.value , возможно ли это все реализовать ?

Ответить

Номер ответа: 11
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #11 Добавлено: 05.10.10 23:40
Всё возможно :)
А перерисовывать линиию нужно в ScrolBar_ChangeValue или как его там..

Ответить

Номер ответа: 12
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #12 Добавлено: 05.10.10 23:41
Ах да. Рисовать нужно на новом битмапе, и после прорисовки подставлять на место старого. А старый диспозить.

Ответить

Номер ответа: 13
Автор ответа:
 Nezhniy



ICQ: 419841508 

Вопросов: 9
Ответов: 100
 Web-сайт: www.helpim.ru
 Профиль | | #13
Добавлено: 06.10.10 00:58
AgentFire пишет:
Ах да. Рисовать нужно на новом битмапе, и после прорисовки подставлять на место старого. А старый диспозить.

 

Слух, помоги школоло ) Задумку твою понял , а вот реализовка , пока у мя мозгов не до конца хватает :D
линии я строю в panel , а не в битмапе , ну разницы нет почти , так вот , я с циклами плох , поэтому не ругай) :
  1.  
  2. Dim point1 As New Point(100, 200)
  3.     Dim point2 As New Point
  4.     Dim blackPen As New Pen(Color.Black, 3) 'массив
  5.  
  6. Private Sub VScrollBar1_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles VScrollBar1.ValueChanged
  7.         
  8. Dim i As Integer
  9.         For i = 1 To 100
  10.            i= VScrollBar1.Value
  11.             Panel1.Dispose()
  12.  
  13.             dim panel1 as panel
  14.             Panel1.Width = 166
  15.             Panel1.Height = 170
  16.             Point2.y = Vscrollbar1.Value
  17.             point1.x = 66   'значение рандомное взял , просто пока x не буду трогать    
  18.  Next (i)
  19.     End Sub
  20.  
  21.  Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint
  22.         
  23. e.Graphics.DrawLine(blackPen, point1, point2)
  24.  
  25.     End Sub



новая проблема: он ругается на
  1. Panel1.Dispose()
  2.  
  3.             dim panel1 as panel  
что и правильно делает , так вот , а как сделать чтобы он сначала удалял panel1 а потом только заново объявлял как новый объект а в нем "y" точки и т.д а то в этом коде у мя каша получается,вот как разделить на до и после и все в самом цикле? P.S сам то цикл я правильно записал ? : D

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #14 Добавлено: 06.10.10 01:08
  1.  
  2. using System;
  3. using System.Windows.Forms;
  4. using System.Drawing;
  5.  
  6. namespace VbNet.Ru
  7. {
  8.     public partial class Form1 : Form
  9.     {
  10.         public Form1()
  11.         {
  12.             InitializeComponent();
  13.  
  14.             vScrollBar1.ValueChanged += ScrollValueChanged;
  15.             hScrollBar1.ValueChanged += ScrollValueChanged;
  16.  
  17.             vScrollBar1.Maximum = Height;
  18.             hScrollBar1.Maximum = Width;
  19.         }
  20.  
  21.         protected override void OnPaint(PaintEventArgs e)
  22.         {
  23.             e.Graphics.DrawLine(Pens.Red, new Point(0, 0),
  24.                                           new Point(hScrollBar1.Value, vScrollBar1.Value));
  25.         }
  26.  
  27.  
  28.         private void ScrollValueChanged(object sender, EventArgs e)
  29.         {
  30.             Invalidate();  
  31.         }
  32.     }
  33. }
  34.  

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #15 Добавлено: 06.10.10 01:35
и нечего велосипед изобретать с квадратными колесами..

Ответить

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

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



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