Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Корректная работа с масштабом... 
:(
    Опции темы
BorisVorontsov
Дата 11.12.2005, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 5
Всего: 10



Пришлось столкнуться с таким вот явлением, как Zoom. По логике размеры изображений я начал менять так:

Код
If bZoomMode = False Then
    With picCanvas
        Set picTemp.Picture = .Picture
        Set .Picture = Nothing
        .Width = .Width * 4
        .Height = .Height * 4
        Call SetStretchBltMode(picCanvas.hdc, STRETCH_HALFTONE)
        Call StretchBlt(.hdc, 0, 0, .ScaleWidth / Screen.TwipsPerPixelX, .ScaleHeight / Screen.TwipsPerPixelY, _
            picTemp.hdc, 0, 0, picTemp.ScaleWidth / Screen.TwipsPerPixelX, picTemp.ScaleHeight / Screen.TwipsPerPixelY, vbSrcCopy)
        .Picture = .Image
        'picCanvas.Scale (0, 0)-(picTemp.ScaleWidth, picTemp.ScaleHeight) Rem Размер точек?
        Set picTemp.Picture = Nothing
    End With
    bZoomMode = True
Else
    With picCanvas
        Set picTemp.Picture = .Picture
        Set .Picture = Nothing
        .Width = .Width \ 4
        .Height = .Height \ 4
        'picCanvas.Scale (0, 0)-(.ScaleWidth, .ScaleHeight)
        Call StretchBlt(.hdc, 0, 0, .ScaleWidth / Screen.TwipsPerPixelX, .ScaleHeight / Screen.TwipsPerPixelY, _
            picTemp.hdc, 0, 0, picTemp.ScaleWidth / Screen.TwipsPerPixelX, picTemp.ScaleHeight / Screen.TwipsPerPixelY, vbSrcCopy)
        .Picture = .Image
        Set picTemp.Picture = Nothing
    End With
    bZoomMode = False
End If


Оказалось, что этот код не может увеличить изображение более чем на ~2000 пикселей. PictureBox сообщает, что Can’t create AutoRedraw Image.
Вот и хотелось бы узнать, как корректно делать Zoom (на любые размеры), и как изменять размер пикселей (точек), чтобы дать возможность рисовать на увеличенном рисунке.

Это сообщение отредактировал(а) BorisVorontsov - 11.12.2005, 18:28


--------------------
[code=cpp]
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;
[/code]
PM MAIL ICQ GTalk   Вверх
BorisVorontsov
Дата 16.12.2005, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 5
Всего: 10



Ну дык что, никто не знает?


--------------------
[code=cpp]
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;
[/code]
PM MAIL ICQ GTalk   Вверх
cardinal
Дата 16.12.2005, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Я думаю это то, что надо.
Поворот и масштабирование 24 битных Bitmap'ов
Там есть пример и я думаю разберешься. Если что - переведу тебе непонятные места...

Вопрос в самом низу. Чел спрашивает:
Цитата
Hallo
KAnn man auch so umschreiben , dass man ein LAbel anklicken kann und es dann drehen kann ?

"Можно ли это переписать так, чтобы я кликнул на Label и смог бы его повернуть?" smile


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
BorisVorontsov
Дата 20.12.2005, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 5
Всего: 10



Цитата(cardinal @ 16.12.2005, 01:10)
Я думаю это то, что надо.


А зря думаешь, не то - это вариации на тему smile
С Zoom'ом интересная штука - судя по всему делать надо по регионам, да желательно на созданном DC и через структуру BITMAP.

Это сообщение отредактировал(а) BorisVorontsov - 20.12.2005, 17:10


--------------------
[code=cpp]
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;
[/code]
PM MAIL ICQ GTalk   Вверх
cardinal
Дата 20.12.2005, 01:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Цитата(BorisVorontsov @ 11.12.2005, 16:27)
Оказалось, что этот код не может увеличить изображение более чем на ~2000 пикселей.

А кто сказал, что это не предел Picture?


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
BorisVorontsov
Дата 21.12.2005, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 5
Всего: 10



Весь мой вопрос в прикреплённом архиве.

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  zoom_.zip 33,67 Kb


--------------------
[code=cpp]
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;
[/code]
PM MAIL ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0965 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.