Неверное сохранение рисунка.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Николай2008
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 25.01.2008 (Пт) 14:12

Неверное сохранение рисунка.

Сообщение Николай2008 » 11.04.2008 (Пт) 21:05

Прошу помощи.

Вообще то это кусок из моего UserControl_a. Сохранение происходит, но если была широкая картинка, а затем высокая, то сохраняеся она все равно как широкая. Ошибка гдето здесь.
Код: Выделить всё
Public Function AutoSizeFoto()
Dim kF As Currency
kF = Picture1.Width / Picture1.Height '
If kF > 1.33 Then '
Picture2.Height = Picture3.Width / kF
Picture2.Width = Picture2.Height * kF
'MoveWindow Picture2.Picture, 0, 0, (Picture2.Height * kF) / 15, (Picture3.Width / kF) / 15, 1
Else
Picture2.Width = Picture3.Height * kF
Picture2.Height = Picture2.Width / kF
End If
Picture2.Left = (Picture3.Width - Picture2.Width) / 2
Picture2.Top = (Picture3.Height - Picture2.Height) / 2

If GetStretchBltMode(Picture2.hdc) <> HALFTONE Then
    SetStretchBltMode Picture2.hdc, HALFTONE '
End If
Me.Caption = Picture2.Height / 15 & "---Picture2.Width " & Picture2.Width / 15 & "  --Pic2.Left" & Picture2.Left
StretchBlt Picture2.hdc, 0, 0, Picture2.Width, Picture2.Height, Picture1.hdc, 0, 0, Picture1.Width, Picture1.Height, SRCCOPY
Picture2.Refresh '
End Function

Вот при вызове этой функции вмдно в заголовке разночтение размеров.
Picture2.Width и Picture2.Image.Width не совподают.

Код: Выделить всё
Public Function SaveFoto()
Me.Caption = "Picture2.Image.Width-" & Picture2.Image.Width & "   Picture2.Width-" & Picture2.Width
SavePicture Picture2.Image, App.Path & "\" & Timer & ".bmp"
End Function



[/syntax][/code]
Вложения
small picture.zip
(59.9 Кб) Скачиваний: 35

Александр Дмитриев
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 296
Зарегистрирован: 05.01.2005 (Ср) 3:39
Откуда: Санкт-Петербург    Куда: /dev/null

Сообщение Александр Дмитриев » 11.04.2008 (Пт) 22:10

Перед рисованием новой картинки нужно стирать старую. Замени
Код: Выделить всё
If GetStretchBltMode(Picture2.hdc) <> HALFTONE Then
    SetStretchBltMode Picture2.hdc, HALFTONE '
End If
на
Код: Выделить всё
Picture2.Cls
SetStretchBltMode Picture2.hdc, HALFTONE '

Николай2008
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 25.01.2008 (Пт) 14:12

Сообщение Николай2008 » 12.04.2008 (Сб) 6:57

Александр Дмитриев
Огромное ВАМ спасибо.


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

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

Сейчас этот форум просматривают: Google-бот, SemrushBot, Yandex-бот и гости: 79

    TopList