Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

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

 

  Вопрос: Как скопировать Picture1 -> Picture2 Добавлено: 10.06.06 19:19  

Автор вопроса:  VisBas | Web-сайт: chipmicro.narod.ru

Ответить

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

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



Вопросов: 0
Ответов: 1066
 Профиль | | #16 Добавлено: 10.06.06 22:44
Чуть опоздал :)
Одно дополнение: чтобы скопировать то, что было нарисовано "вручную", предварительно надо "закрепить" изображение в пикчербоксе, если не ошибаюсь, то это:
Picture2.Picture = Picture2.Image
И затем у же любой из приведеных тут способов.

Ответить

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



Вопросов: 44
Ответов: 127
 Web-сайт: chipmicro.narod.ru
 Профиль | | #17
Добавлено: 10.06.06 22:57
Выходит ты пустил пенку, не сказав самого главного, а сейчас поправился. Все дело было в этой "волшебной" строке Picture1.Picture = Picture1.Image.
PaintPicture и Picture2.Picture = Picture1.Picture без этой строки бесполезен. А BitBlt как оказалось работает только когда картинка-источник видима (Visible=true).
Спасибо !

Ответить

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



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #18
Добавлено: 10.06.06 23:10
Мне кажется, BitBlt работает всегда, когда AutoRedraw = True (если ошибаюсь, поправьте)

Ответить

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



Вопросов: 44
Ответов: 127
 Web-сайт: chipmicro.narod.ru
 Профиль | | #19
Добавлено: 10.06.06 23:16
Мне кажется, BitBlt работает всегда, когда AutoRedraw = True (если ошибаюсь, поправьте)


Попробовал, BitBlt не работает, а AutoRedraw не влияет, если на картинке-источнике Visible=False.

Ответить

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



Вопросов: 0
Ответов: 1066
 Профиль | | #20 Добавлено: 10.06.06 23:17
Ха, дык кто же знал, что тебе надо закрепить изображение в пикчербоксе ???
Или я должен был догадаться, что ты не сделал "волшебное" Picture1.Picture = Picture1.Image :)))
Я же не телепат. И не поправлялся, а дополнил, вспомнив про этот момент.
Так что это не моя пенка :))))

Ответить

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



Вопросов: 0
Ответов: 1066
 Профиль | | #21 Добавлено: 10.06.06 23:19
BitBlt не возьмёт со скрытого пикчера, т.к. она работает с hDC, а не с объектом stdPicture (или как оно там называется).

Ответить

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



Вопросов: 44
Ответов: 127
 Web-сайт: chipmicro.narod.ru
 Профиль | | #22
Добавлено: 10.06.06 23:24
Так или иначе, спасибо! Все заработало.

Ответить

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



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #23
Добавлено: 11.06.06 16:12
BitBlt не возьмёт со скрытого пикчера, т.к. она работает с hDC, а не с объектом stdPicture (или как оно там называется).


Не знаю, у меня работает:

Private Declare Function BitBlt Lib "gdi32" (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

Private Sub Command1_Click()
Picture1.Line (0, 0)-(1000, 1000)
Picture1.Line -(2000, 1000)
Picture1.Line -(2000, 5000)
Picture1.Visible = False
Picture1.Move 100000, 100000, 1, 1
End Sub

Private Sub Command2_Click()
BitBlt Picture2.hDC, 0, 0, 200, 200, Picture1.hDC, 0, 0, vbSrcCopy
End Sub

Private Sub Form_Load()
Picture1.AutoRedraw = True
End Sub

Ответить

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



ICQ: 997550 

Вопросов: 5
Ответов: 18
 Профиль | | #24 Добавлено: 12.06.06 18:54
Может ты это имел ввиду?
копирует со всем, что ты там нарисовал.

Picture1.AutoRedraw = True
Picture2.AutoRedraw = True
Picture1.line (0,0)-(200,200),vbRed, BF
Picture2.Picture = Picture1.Image
или
Picture2.PaintPicture Picture1.Image,0,0

Ответить

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



ICQ: 997550 

Вопросов: 5
Ответов: 18
 Профиль | | #25 Добавлено: 12.06.06 18:55
ойййй :)
Я опаздал :)

Ответить

Номер ответа: 26
Автор ответа:
 VisBas



Вопросов: 44
Ответов: 127
 Web-сайт: chipmicro.narod.ru
 Профиль | | #26
Добавлено: 13.06.06 00:14
Morpheus, странно, твой код у меня тоже нормально работает, а мой, когда делаеш Visible=False копирует не пикчер, а то, что находится на его месте(когда он невидим).

Ответить

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



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #27
Добавлено: 13.06.06 01:39
щас HOOLIGAN придёт, разберётся :)

Ответить

Номер ответа: 28
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #28 Добавлено: 13.06.06 10:15
Жесть. Из за одной строчки на две страницы тему растянули. Хотя раз 300 обсасывалось :-[]

Ответить

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



Вопросов: 0
Ответов: 1066
 Профиль | | #29 Добавлено: 13.06.06 12:15
VisBas
Две страницы обсуждений, а ты так и не показал, что за код. Вынуждаешь наощупь действовать. Несерьёзно это :)

Ответить

Номер ответа: 30
Автор ответа:
 Алексей



ICQ: 207504159 

Вопросов: 1
Ответов: 14
 Web-сайт: lehs.info
 Профиль | | #30
Добавлено: 23.06.06 20:17
Ребята, только работал с функцией BitBlt - у нее есть такая особенность: она нормально копирует, если у источника AutoRedraw = True и !!! перед тем как копировать надо ОЧИСТИТЬ получатель хотя-бы один раз !!!. т.е. в начале программы Picture1.Cls , а потом можно уже и БитБлитом!!!

Ответить

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

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



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