Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Графика в VB


Автор: fAL_in_school 13.11.2004, 11:26
Мне нужно "вырезать"(по заданным коорадинатам (x1,y1)-(x2,y2)) и "вставить"(по заданным координатам(x3,y3)-(x4,y4)) графическую структуру созданную несколькими обьектами LINE (LINE я прописывал в коде, а не создавал руками). Структуру нужно вставлять на форму несколько раз (координаты разные). Как это сделать? smile

Автор: Sirik 13.11.2004, 11:49
Попробуй использовать функцию BitBlt из gdi32.

Вот описание:
Код

Public Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long



Примерчик можешь посмотреть тут:
http://www.sources.ru/vb/vb_bitblt_pong.shtml

Автор: Alles 16.11.2004, 08:21
Код

Dim MyLine As String
Private Sub CommandButton1_Click()
On Error Goto Button1_Exit
ActiveSheet.Shapes(MyLine).Select
 Selection.Delete

MyLine = "Line1"

   ActiveSheet.Shapes.AddLine(162#, 336.75, 963#, 336.75).Select
   Selection.ShapeRange.IncrementTop -1.5
   Selection.ShapeRange.Line.ForeColor.SchemeColor = 8
   Selection.ShapeRange.Line.Visible = msoTrue
   Selection.Name = MyLine
   ActiveSheet.Shapes(MyLine).Select
   Selection.ShapeRange.Flip msoFlipHorizontal
'Добавляем объект на лист
Button1_Exit:
End Sub

Private Sub CommandButton2_Click()

X = 162
n = 1
For n = 2 To 100
X = X + (801 / 100)
m = Int((10000 * Rnd) + 1)
ZZ = Log(m) * 25
Y = 336 - ZZ
ActiveSheet.Shapes(MyLine).Nodes.Insert 1, msoSegmentLine, msoEditingAuto, X, Y
DoEvents
Next
End Sub

Это просто пример , но можно делать очень эффектные графики !

Автор: Alles 16.11.2004, 08:36
Я поправлюсь это будет работать только в VBA (Excel )

Автор: cardinal 16.11.2004, 13:58
Alles, а кто [code=vb] в конце кода закрывать будет?
(я уже сделал за тебя smile)

Автор: Alles 16.11.2004, 15:00
Пардон ! smile

Автор: Alles 16.11.2004, 16:42
И еще раз прошу прощения !
код работать не будет пока не заремарить
Код

ActiveSheet.Shapes(MyLine).Select
Selection.Delete

Сначала объект должен быть создан , а так по Error-у программа будет уходить на выход , потому , что объекта еще нет.
А потом ремы нужно убрать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)