Типа Paint'a

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
SeT
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 362
Зарегистрирован: 29.12.2004 (Ср) 13:11

Типа Paint'a

Сообщение SeT » 19.02.2006 (Вс) 13:49

Делаю графопостроитель, который должен работать по принципу Paint'a (теже инструменты). У меня несколько вопросов:
Как сделать, что бы по пикчербоксу можно было перемещать перекрестие линий (для сверки координат0, чтобы эти линии не оставляли следов на пикчербоксе?
Как сохранить в картинку не весь пикчербокс а н.р. его какую-то часть?
Помогите, плииииз...
01000100
Причиняет боль 0010
Виртуальная любовь 00100
Индустрия снов 0010

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.02.2006 (Вс) 13:54

1. Курсор такой поставь.
2. bitblt и сохранить.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

SeT
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 362
Зарегистрирован: 29.12.2004 (Ср) 13:11

Сообщение SeT » 19.02.2006 (Вс) 13:56

не, курсор не подойдёт. нужно чтобы линии по всей длине были, до осей координат
01000100
Причиняет боль 0010
Виртуальная любовь 00100
Индустрия снов 0010

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.02.2006 (Вс) 14:35

SeT писал(а):не, курсор не подойдёт. нужно чтобы линии по всей длине были, до осей координат

Рисунок храни в свойстве Picture, поверх него рисуй линии. Когда потом вызовешь Cls -- рисунок останется, а линии сотрутся.
Изображение

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 19.02.2006 (Вс) 14:38

Могу предложить:

а) подождать и присоединиться к развитию редактора AltPaint
б) http://www.google.com/search?client=ope ... 8&oe=utf-8
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

SeT
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 362
Зарегистрирован: 29.12.2004 (Ср) 13:11

Сообщение SeT » 19.02.2006 (Вс) 14:51

А как рисунок сохранить с Picture? Я ж на нём гафик строю. линии графика должны оставаться, а вот линии так сказать наводки оставаться не должны...
01000100
Причиняет боль 0010
Виртуальная любовь 00100
Индустрия снов 0010

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 19.02.2006 (Вс) 14:54

Ну ёклмн...

Ты мой пост читал? По ссылке ходил? VB Paint (исходники полноценного граф. редактора) смотрел?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

SeT
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 362
Зарегистрирован: 29.12.2004 (Ср) 13:11

Сообщение SeT » 19.02.2006 (Вс) 15:06

Ты их сам смотрел? Нафига мне такая сложность! попробуй сам разберись в этом коде.
01000100
Причиняет боль 0010
Виртуальная любовь 00100
Индустрия снов 0010

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 19.02.2006 (Вс) 15:10

Всё ясно, в игнор.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.02.2006 (Вс) 15:27

SeT писал(а):А как рисунок сохранить с Picture?

Код: Выделить всё
Me.Picture = Me.Image
Изображение

SeT
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 362
Зарегистрирован: 29.12.2004 (Ср) 13:11

Сообщение SeT » 19.02.2006 (Вс) 15:33

Спасибо
01000100
Причиняет боль 0010
Виртуальная любовь 00100
Индустрия снов 0010

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Типа Paint'a

Сообщение Andrey Fedorov » 20.02.2006 (Пн) 16:46

SeT писал(а):Как сделать, что бы по пикчербоксу можно было перемещать перекрестие линий (для сверки координат0, чтобы эти линии не оставляли следов на пикчербоксе?


Тут все примитивно - возьми два контрола Line (горизонтальную и вертикальную), положи их на свой рисунок и перемещай сколько хочешь.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Бяка
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 21.09.2005 (Ср) 21:28

Сообщение Бяка » 23.02.2006 (Чт) 0:06

по вопросу 1 кидаеш Line2 и Line1 на Picture1 и Text1 и TextRGB(Text2)
и вот этот код который я только что аж 5минут писал

Код: Выделить всё
Private Sub coord(x As Single, y As Single, Visib As Boolean)
Dim Pixel As Long, RCoord As Long, GCoord As Long, BCoord As Long
Line1.Visible = Visib
Line2.Visible = Visib
'это линии
Line1.x1 = Picture1.ScaleLeft
Line1.x2 = Picture1.ScaleWidth
Line1.y1 = y
Line1.y2 = y
Line2.y1 = Picture1.ScaleHeight
Line2.y2 = Picture1.ScaleTop
Line2.x1 = x
Line2.x2 = x
Text1.Text = CStr(Fix(x)) & "," & CStr(Fix(y)) ' это координаты
Pixel = Picture1.Point(x, y)
RCoord = Pixel Mod 256
GCoord = ((Pixel And &HFF00) / 256) Mod 256
BCoord = (Pixel And &HFF00) \ 256 \ 256
TextRGB.Text = CStr((RCoord)) & "," & CStr((GCoord)) & "," & CStr((BCoord)) ' это цвет тоцки под курсором
End Sub


А как рисунок сохранить с Picture?


куда?
если на диск как бмп то вот
Код: Выделить всё
Call SavePicture(Picture1.Image, "c:\голая тётка.bmp")

если просто изменения в пикчурсе то
Код: Выделить всё
Picture1=Picture1.Image


Как сохранить в картинку не весь пикчербокс а н.р. его какую-то часть?


Код: Выделить всё
BitBlt Picture1.hDc, CoordLeft, CoorTop, CoorW, CoorH, Picture2.hDc, 0, 0, vbSrcCopy ' где CoordLeft, CoorTop, CoorW, CoorH это координаты куска рисунка
Call SavePicture(Picture2.Image, "c:\сиська.bmp")


Вернуться в Visual Basic 1–6

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

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

    TopList  
cron