Страница: 1 |
Почему-то не правильно работает этот код (код упрощён): x = 0 y = 0 For i = 1 To 1 v = "00010010" For j = 0 To 7 v2 = Mid(v, j + 1, 1) Select Case v2 Case "1" pic1.PSet (j, y), RGB(0, 0, 0) Case "0" pic1.PSet (j, y), RGB(255, 255, 255) End Select Next j Next i он рисует мне только шесть пикселей, хотя должен восемь! Я вставлял msgbox между строк чтобы понять какие он пиксели пропускает: x = 0 y = 0 For i = 1 To 1 v = "00010010" For j = 0 To 7 v2 = Mid(v, j + 1, 1) Select Case v2 Case "1" pic1.PSet (j, y), RGB(0, 0, 0) msgbox j, 24, y 'Вот msgbox Case "0" pic1.PSet (j, y), RGB(255, 255, 255) msgbox j, 24, y 'Вот msgbox End Select Next j Next i но msgbox показывала что функция PSet устанавливает все 8 пикселей! Помогите, я уже задолбался!
А зачем ты пишеш For i=1 to 1? VB такое вообще пропускает, если первое число равно второму. Убери этот цикл или напиши For i=1 to 2. Вообще на такой случай у VB есть режим отладки Создал новый проект, вставил код.. М да.. И правда рисует все восемь точек.. Но почему-то в моем старом проекте не хочет пахать ни в какую! Видимо либо глючит не он, либо какой-то другой код делает этот глючным. Выкладываю листинг, если не лень и есть возможность помочь, то просмотрите пожалуйста.. Private Sub Command1_Click() 'Закрашиваем PictureBox нейтральным цветом For i = 0 To pic1.ScaleWidth For j = 0 To pic1.ScaleHeight pic1.PSet (i, j), RGB(250, 250, 250) Next j Next i 'Очищаем переменные i = 0 j = 0 'Здесь я кодирую символы из поля Text2 'в набор ноликов и едениц 'и помещаю его в поле Text1 For i = 1 To Len(Text2.Text) v = Mid(Text2.Text, 1, 1) If Len(Text2.Text) = 1 Then Text2.Text = "" Else Text2.Text = Mid(Text2.Text, 2, Len(Text2.Text) - 1) End If Select Case v Case "0" Text1.Text = Text1.Text + "00100010" Case "1" Text1.Text = Text1.Text + "00100011" Case "2" Text1.Text = Text1.Text + "00100100" Case "3" Text1.Text = Text1.Text + "00100101" Case "4" Text1.Text = Text1.Text + "00100110" Case "5" Text1.Text = Text1.Text + "00100111" Case "6" Text1.Text = Text1.Text + "00101000" Case "7" Text1.Text = Text1.Text + "00101001" Case "8" Text1.Text = Text1.Text + "00101010" Case "9" Text1.Text = Text1.Text + "00101011" Case "+" Text1.Text = Text1.Text + "00101100" Case "-" Text1.Text = Text1.Text + "00101101" Case "*" Text1.Text = Text1.Text + "00101110" Case "/" Text1.Text = Text1.Text + "00101111" Case "=" Text1.Text = Text1.Text + "00110000" Case "." Text1.Text = Text1.Text + "00110001" Case "," Text1.Text = Text1.Text + "00110010" Case " " Text1.Text = Text1.Text + "00110011" End Select Next i 'Очищаем переменные i = 0 v = "" x = 0 y = 0 'Этот код ставит каждому нулю из поля Text1 'пиксель белого цвета в PictureBox 'а каждой еденице пикслель черного цвета ' For i = 1 To (Len(Text1.Text) / 8) v = Mid(Text1.Text, (i - 1) * 8 + 1, 8) For j = 0 To 7 v2 = Mid(v, j + 1, 1) Select Case v2 Case "1" pic1.PSet (x, y), RGB(0, 0, 0) Case "0" pic1.PSet (x, y), RGB(255, 255, 255) End Select x = x + 1 Next j 'Эта вставочка нужна для того, 'чтобы в PictureBox ставилось не более '256 пикселей в каждой строке t = t + 1 If (t = 32) And (i <> Len(Text1.Text) / 8) Then t = 0 x = 0 y = y + 1 End If Next i 'Ставим в конце точку красного цвета 'означающую конец кода pic1.PSet (x, y), RGB(255, 0, 0) i = 0 j = 0 v = "" v2 = "" Text1.Text = "" Text2.Text = "" End Sub Я вставил, у меня всё работает. Посмотри свойство AutoRedraw у pic1, должно быть true. Или может тебе плохо видно как они рисуются? Сделай ScaleHeight=10 и ScaleWidth=10 и DrawWidth=5, будет хорошо видно. Блииииииииииин!!!!! Я идиот! (это конечно не правда ), код правильный! Это я забыл поставить у pic1 свойство ScaleMod = Pixel !!! Извините кто потратил свое время из-за моей невнимательности, но я просто никак не мог допереть что не правильно в коде вот и спросил на форуме, а оказалось надо проверять сначала самые простые версии неисправностей. Надеюсь кому-то мой горький опыт пойдет на пользу Страница: 1 |
Вопрос: Глючит комп или я..?
Добавлено: 05.04.04 20:50
Автор вопроса: ISpy | Web-сайт:
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
Vilya
ICQ: 232995216
Вопросов: 12
Ответов: 63
Web-сайт:
Профиль | | #1
Добавлено: 05.04.04 21:22
Номер ответа: 2
Автор ответа:
2San
Вопросов: 11
Ответов: 68
Профиль | | #2
Добавлено: 05.04.04 21:33
У меня этот код рисует все восемь пикселей.
Может ты его слишком сильно упростил?
Номер ответа: 3
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #3
Добавлено: 05.04.04 21:36
Нормально рисует, все восемь точек - шесть белых и две черные. А у тебя случайно пикчербокс не черного цвета???. Сделай его красным, например
Номер ответа: 4
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #4
Добавлено: 06.04.04 09:32
Номер ответа: 5
Автор ответа:
ISpy
Разработчик Offline Client
Вопросов: 47
Ответов: 621
Web-сайт:
Профиль | | #5
Добавлено: 06.04.04 15:50
Номер ответа: 6
Автор ответа:
Vilya
ICQ: 232995216
Вопросов: 12
Ответов: 63
Web-сайт:
Профиль | | #6
Добавлено: 06.04.04 16:57
Номер ответа: 7
Автор ответа:
ISpy
Разработчик Offline Client
Вопросов: 47
Ответов: 621
Web-сайт:
Профиль | | #7
Добавлено: 06.04.04 17:20