Страница: 1 | 2 |
Вопрос: Как скопировать Picture1 -> Picture2
Добавлено: 10.06.06 19:19
Автор вопроса: VisBas | Web-сайт:
Ответы
Всего ответов: 30
Номер ответа: 16
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #16
Добавлено: 10.06.06 22:44
Чуть опоздал
Одно дополнение: чтобы скопировать то, что было нарисовано "вручную", предварительно надо "закрепить" изображение в пикчербоксе, если не ошибаюсь, то это:
Picture2.Picture = Picture2.Image
И затем у же любой из приведеных тут способов.
Номер ответа: 17
Автор ответа:
VisBas
Вопросов: 44
Ответов: 127
Web-сайт:
Профиль | | #17
Добавлено: 10.06.06 22:57
Выходит ты пустил пенку, не сказав самого главного, а сейчас поправился. Все дело было в этой "волшебной" строке Picture1.Picture = Picture1.Image.
PaintPicture и Picture2.Picture = Picture1.Picture без этой строки бесполезен. А BitBlt как оказалось работает только когда картинка-источник видима (Visible=true).
Спасибо !
Номер ответа: 18
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #18
Добавлено: 10.06.06 23:10
Мне кажется, BitBlt работает всегда, когда AutoRedraw = True (если ошибаюсь, поправьте)
Номер ответа: 19
Автор ответа:
VisBas
Вопросов: 44
Ответов: 127
Web-сайт:
Профиль | | #19
Добавлено: 10.06.06 23:16
Попробовал, 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-сайт:
Профиль | | #22
Добавлено: 10.06.06 23:24
Так или иначе, спасибо! Все заработало.
Номер ответа: 23
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #23
Добавлено: 11.06.06 16:12
Не знаю, у меня работает:
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-сайт:
Профиль | | #26
Добавлено: 13.06.06 00:14
Morpheus, странно, твой код у меня тоже нормально работает, а мой, когда делаеш Visible=False копирует не пикчер, а то, что находится на его месте(когда он невидим).
Номер ответа: 27
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #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-сайт:
Профиль | | #30
Добавлено: 23.06.06 20:17
Ребята, только работал с функцией BitBlt - у нее есть такая особенность: она нормально копирует, если у источника AutoRedraw = True и !!! перед тем как копировать надо ОЧИСТИТЬ получатель хотя-бы один раз !!!. т.е. в начале программы Picture1.Cls , а потом можно уже и БитБлитом!!!