• 大小: 1.52MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-25
  • 语言: C/C++
  • 标签:

资源简介

交互式绘图程序(MFC) 可以选择图形的种类(直线、折线、矩形、[椭]圆、多边形及对应的填充图形)、绘图颜色(使用颜色公用对话框)、笔的粗细和风格、填充模式(包括填充颜色[与图案])、背景模式与颜色; 可以动态拖动绘图,并显示鼠标当前位置坐标以及拖动矩形的大小; [可以用选择的字体、大小和颜色(使用字体公用对话框)在指定的位置按指定的对齐方式来输出文字串; 可以清屏(调用CWnd类的函数Invalidate()或用背景色画填充客户区矩形)、可以按Esc键取消正在进行的绘图操作; 各种操作和选择有对应的菜单项,且有对应的工具条按钮和加速键

资源截图

代码片段和文件信息

// ChangeBmp.cpp : 实现文件
//

#include “stdafx.h“
#include “GandyDraw.h“
#include “ChangeBmp.h“


// CChangeBmp 对话框

IMPLEMENT_DYNAMIC(CChangeBmp CDialog)

CChangeBmp::CChangeBmp(CWnd* pParent /*=NULL*/)
: CDialog(CChangeBmp::IDD pParent)
 m_iShowWidth(0)
 m_iShowHeight(0)
 m_BmpPathName(_T(““))
{
m_FileBitmap.LoadBitmapW(IDB_BITMAP_MM);

}

CChangeBmp::~CChangeBmp()
{
}

void CChangeBmp::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX IDC_SHOW_WIDTH m_iShowWidth);
DDX_Text(pDX IDC_SHOW_HEIGHT m_iShowHeight);
}


BEGIN_MESSAGE_MAP(CChangeBmp CDialog)
ON_BN_CLICKED(IDC_LOADBMP &CChangeBmp::OnBnClickedLoadbmp)
ON_WM_PAINT()
END_MESSAGE_MAP()


// CChangeBmp 消息处理程序

void CChangeBmp::OnBnClickedLoadbmp()
{
wchar_t filters[] = L“位图文件(*.bmp)|*.bmp|所有文件(*.*)|*.*||“;
CFileDialog fileDlg(TRUE NULL NULL OFN_HIDEREADONLY filters);
if (fileDlg.DoModal() == IDOK) 
{
HBITMAP hBmp = (HBITMAP)LoadImage(NULL fileDlg.GetPathName() 
IMAGE_BITMAP 0 0 LR_LOADFROMFILE | 
LR_DEFAULTCOLOR | LR_DEFAULTSIZE);
if (hBmp != NULL) {
BITMAP bm;
Getobject(hBmp sizeof(bm) &bm);
long cb = bm.bmBitsPixel * bm.bmHeight * bm.bmWidthBytes;
bm.bmBits = new char[cb];
GetBitmapBits(hBmp cb bm.bmBits);
m_FileBitmap.CreateBitmapIndirect(&bm);
m_BmpPathName = fileDlg.GetPathName();
//m_bBitmapLoaded = true;
}
}

//BITMAP bs;
//m_FileBitmap.GetBitmap(&bs);
//m_iShowWidth = bs.bmWidth;
//m_iShowHeight = bs.bmHeight;
//UpdateData(false);



}

void CChangeBmp::ShowImg(UINT ID HBITMAP hBmp)
{
CWnd* pWnd = GetDlgItem(ID);
CDC* pDC = pWnd->GetDC();
CRect rect; 
pWnd->GetClientRect(&rect);
pDC->FillSolidRect(&rectRGB(128128128));
pWnd->Invalidate();
pWnd->UpdateWindow();
BITMAP bs;
Getobject(hBmp sizeof(bs) &bs);
CDC dc;
if(dc.CreateCompatibleDC(pDC)) {
int x0 y0 w h;
float rx = (float)bs.bmWidth / rect.right 
ry = (float)bs.bmHeight / rect.bottom;
if (rx >= ry) {
x0 = 0; w = rect.right;
h = (int)(bs.bmHeight / rx + 0.5);
y0 = (rect.bottom - h) / 2;
}
else {
y0 = 0; h = rect.bottom;
w = (int)(bs.bmWidth / ry + 0.5);
x0 = (rect.right - w) / 2;
}
::Selectobject(dc.GetSafeHdc() hBmp);
pDC->SetStretchBltMode(HALFTONE);
pDC->StretchBlt(x0 y0 w h &dc 0 0 bs.bmWidth bs.bmHeight SRCCOPY);
SetDlgItemInt(IDC_SHOW_WIDTH bs.bmWidth);
SetDlgItemInt(IDC_SHOW_HEIGHT bs.bmHeight);
}
}


void CChangeBmp::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialog::OnPaint()


HBITMAP hBmp = (HBITMAP)LoadImage(NULL m_BmpPathName 
IMAGE_BITMAP 0 0 LR_LOADFROMFILE | 
LR_DEFAULTCOLOR | LR_DEFAULTSIZE);
if (hBmp != NULL) {
BITMAP bm;
Getobject(hBmp sizeof(bm) &bm);
long cb = bm.bmBitsPixel * bm.bmHeight * bm.bmWidthBytes;
bm.bmBits = new ch

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1198  2006-11-17 11:13  Toolbar.bmp

----------- ---------  ---------- -----  ----

                 1198                    1


评论

共有 条评论

相关资源