Re: сжать картинку
От: olga sayenko  
Дата: 08.02.05 10:14
Оценка:
Благодарна всем за помощь

Я нашла класс CPicture в codeproject.com. Всё работает.
Чтобы менять картинки на диалоге при нажатии кнопки, я сделала следующее:

1. Добавляем объект CRect, чтобы задавать размеры картинки, и объект CPicture.

#include "Picture.h" 

/////////////////////////////////////////////////////////////////////////////
// CMyDlg dialog

class CMyDlg : public CDialog
{
// Construction
public:
  CMyDlg(CWnd* pParent = NULL);    // standard constructor
  CPicture  m_Picture;
  CRect     m_rectPicSize;

......



2. Дальше переписуем OnPaint.

void CMyDlg::OnPaint() 
{
  CPaintDC dc(this); // device context for painting
  
  CDialog::OnPaint();
  
  m_Picture.Show(&dc, m_rectPicSize); // show picture
}


3. Дальше пишем функцию кнопки. Например, OnOK. Задаем верхнию левую позицию и желаемые размеры картинки: или постоянные, или относительно оригинальных размеров.

void CMyDlg::OnOK() 
{
  m_Picture.Load("image.jpg"); // or full picture path
  
  m_rectPicSize.left    = 30;
  m_rectPicSize.top     = 30;
  m_rectPicSize.right   = m_Picture.m_Width / 2; // diminish original Width 
  m_rectPicSize.bottom  = m_Picture.m_Height / 2; // diminish original Height 

  CWnd::RedrawWindow();
}


4. Можно убрать картинку. Например, при нажатии другой кнопки.

void CMyDlg::OnButton2() 
{
  m_Picture.FreePictureData();
  CWnd::RedrawWindow();
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.