Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Image, Смещение изображения 
:(
    Опции темы
W_A_S_J_A
Дата 1.11.2008, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 5.3.2007

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



Подскажите пожалуста. Мне необходимо в пограмі загружать изображение в Image. Но изображение больше размеров самого Image, а по ходу самого выполнения программы необходимо эту картинку смещать, то есть отображать нужную часть изображения. Я хочу реализовать отображение изображений в моей программе, так как это реализовано во многих скінах разных программ. То есть, есть одна большая картинка в которой изображены все необходимы изображения, и соответственно из программы передвигать ее, чтобы отображалось толька то изображение, которое в тот момент времени необходимо. Размер Image у меня равен одному элементу на большом изображении. Меня интересует как осуществить это перемещение изображения в Image
PM MAIL   Вверх
SVN74
Дата 1.11.2008, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

Репутация: 11
Всего: 18



Судя по описанному выше, необходимо еще знать информацию о месте положения малого рисунка в большом рисунке.
===================
Можно просто загрузить большой рисунок в объект TBitmap  и  затем переносить из него пиксели (в Image) + смещение по координатам относительно размера малой картинки.

PM MAIL WWW   Вверх
W_A_S_J_A
Дата 1.11.2008, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 5.3.2007

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



SVN74 Допустимо что координаты малого рисунка в большом известны. Как это реализовать? Можете написать пример?
PM MAIL   Вверх
SVN74
Дата 1.11.2008, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

Репутация: 11
Всего: 18



Вот набросал программку (для примера), которая загружает BMP картину размером (1600х1200) и затем кнопками право, лево, вверх, вниз, выделяет кусок (160х120)  из этой картины и отображает его в Image.
Вот внешний вид программки:
 http://pic.ipicture.ru/uploads/081101/TLG6LnuTiy.jpg

Код

#include <vcl.h>
#pragma hdrstop

#include "BMP.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 Graphics::TBitmap *BitMapBig=new Graphics::TBitmap;    // Переместить в заголовок формы
  Graphics::TBitmap *BitMapSmall=new Graphics::TBitmap;  // Переместить в заголовок формы
 int Ximage = 160,Yimage = 120; // размер малого изображения (выдуман для примера)
 int y,x; //количество картинок (изначально)
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
   x=0;y=0;
   BitMapBig->LoadFromFile("1_Proba.bmp"); // загрузка файла (большого рисунка 1600 x 1200)
   BitMapSmall->Width = Ximage;
   BitMapSmall->Height = Yimage;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  Image1->Stretch = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LeftClick(TObject *Sender)
{
  if(x>0) x--;
  BitBlt(BitMapSmall->Canvas->Handle,0,0,Ximage,Yimage,BitMapBig->Canvas->Handle,x*Ximage,y*Yimage,SRCCOPY);
  Image1->Picture->Assign(BitMapSmall);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BigShowClick(TObject *Sender)
{
   Image1->Picture->Assign(BitMapBig);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::UpClick(TObject *Sender)
{
  if(y>0) y--;
  BitBlt(BitMapSmall->Canvas->Handle,0,0,Ximage,Yimage,BitMapBig->Canvas->Handle,x*Ximage,y*Yimage,SRCCOPY);
  Image1->Picture->Assign(BitMapSmall);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RightClick(TObject *Sender)
{
  if(x < (1600 / Ximage -1)) x++;
  BitBlt(BitMapSmall->Canvas->Handle,0,0,Ximage,Yimage,BitMapBig->Canvas->Handle,x*Ximage,y*Yimage,SRCCOPY);
  Image1->Picture->Assign(BitMapSmall);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DownClick(TObject *Sender)
{
  if(y < (1200 / Yimage -1)) y++;
  BitBlt(BitMapSmall->Canvas->Handle,0,0,Ximage,Yimage,BitMapBig->Canvas->Handle,x*Ximage,y*Yimage,SRCCOPY);
  Image1->Picture->Assign(BitMapSmall);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
  delete BitMapBig;
 delete BitMapSmall;
}


Это сообщение отредактировал(а) SVN74 - 1.11.2008, 20:27
PM MAIL WWW   Вверх
W_A_S_J_A
Дата 1.11.2008, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 5.3.2007

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



SVN74,  Большая благодарность за приведенный код. Все работает СУПЕР. Еще раз большое благодарю, ты меня выручил.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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