deleteobject(deleteobject wmf)

http://www.itjxue.com  2023-03-06 23:17  来源:未知  点击次数: 

c++中如何调用图片?

有很多办法

比如用IPicture

用CBitmap //MFC

更直接的是

用File进行文件操作,用BitBlt显示

具体代码你用以上关键字Google

这里给你推荐几个,末尾给你附一个网上可以找到的CPicture类(需MFC支持):

-------IPicture

// pDoc为文档对象指针

// pDC为设备描述表指针

::CoInitialize(NULL); // COM 初始化

HRESULT hr;

CFile file;

file.Open(pDoc-GetPathName(), CFile::modeRead | CFile::shareDenyNone ); // 读入文件内容

DWORD dwSize = file.GetLength();

HGLOBAL hMem = ::GlobalAlloc( GMEM_MOVEABLE, dwSize );

LPVOID lpBuf = ::GlobalLock( hMem );

file.ReadHuge( lpBuf, dwSize );

file.Close();

::GlobalUnlock( hMem );

IStream * pStream = NULL;

IPicture * pPicture = NULL;

// 由 HGLOBAL 得到 IStream,参数 TRUE 表示释放 IStream 的同时,释放内存

hr = ::CreateStreamOnHGlobal( hMem, TRUE, pStream );

ASSERT ( SUCCEEDED(hr) );

hr = ::OleLoadPicture( pStream, dwSize, TRUE, IID_IPicture, ( LPVOID * )pPicture );

ASSERT(hr==S_OK);

long nWidth,nHeight; // 宽高,MM_HIMETRIC 模式,单位是0.01毫米

pPicture-get_Width( nWidth ); // 宽

pPicture-get_Height( nHeight ); // 高

CRect rect;

GetClientRect(rect);

CSize sz( nWidth, nHeight );

pDC-HIMETRICtoDP( sz ); // 转换 MM_HIMETRIC 模式单位为 MM_TEXT 像素单位

long x, y, cx, cy;

// 原始大小

/*

cx = sz.cx;

cy = sz.cy;

x = rect.Width() / 2 - cx / 2;

y = rect.Height() / 2 - cy / 2;

*/

// 自动适应窗口

double fRatePic, fRateWnd;

fRatePic = (double)sz.cx / (double)sz.cy;

fRateWnd = (double)rect.Width() / (double)rect.Height();

if (fRatePic fRateWnd)

{

cx = rect.Width();

cy = (long)(rect.Width() / fRatePic);

}

else

{

cx = (long)(rect.Height() * fRatePic);

cy = rect.Height();

}

if (cx == rect.Width())

{

x = 0;

y = rect.Height() / 2 - cy / 2;

}

if (cy == rect.Height())

{

x = rect.Width() / 2 - cx / 2;

y = 0;

}

pPicture-Render(pDC-m_hDC, x, y, cx, cy,

0, nHeight, nWidth, -nHeight, NULL);

if ( pPicture ) pPicture-Release();// 释放 IPicture 指针

if ( pStream ) pStream-Release(); // 释放 IStream 指针,同时释放了 hMem

::CoUninitialize();

--------------------------------CBitmap:

HBITMAP bitmap;

bitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),strFileName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);

m_backBitmap.DeleteObject();

if(!m_backBitmap.Attach(bitmap))

{

MessageBox("导入背景图失败!","提示",MB_OK);

return;

}

----------------------File:略

前提是你要知道图片的编码格式

一般比较简单的是BMP,包括

BITMAPFILEHEADER,BITMAPINFO,BITMAPINFOHEADER

如果图片采用了压缩算法可能会麻烦一点,

关于详细情况你也以Google一下

附CPicture(引用自网上)

// Picture.h: interface for the CPicture

#ifndef PICTURE_H

#ifndef picture_h

#define PICTURE_H

#define picture_h

#if _MSC_VER 1000

#pragma once

#endif // _MSC_VER 1000

class CPicture

{

public:

CPicture();

virtual ~CPicture();

public:

BOOL LoadPicture(UINT nResource, LPCTSTR lpszResType)

{return LoadPicture(MAKEINTRESOURCE(nResource), lpszResType);}

BOOL LoadPictureFromFile(LPCTSTR lpszFileName);

BOOL LoadPicture(LPCTSTR lpszResource,LPCTSTR lpszResType);

BOOL IsValid(){ return m_pPic!=NULL;}

CSize GetSize(){return m_size;}

void Draw(CDC* pDC, LPCRECT lprcDest, LPCRECT lprcSrc);

void Draw(CDC* pDC, int xDest,int yDest, int cxDest, int cyDest ,

int xSrc ,int ySrc ,int cxSrc ,int cySrc);

void Release();

protected:

IPicture* m_pPic;

OLE_XSIZE_HIMETRIC _w_him;

OLE_YSIZE_HIMETRIC _h_him;

CSize m_size;

protected:

void CalcSize();

};

#endif // define picture_h

#endif // define PICTURE_H

//////////////////////////////////////////////////////////////////////

// Picture.cpp: implementation of the CPicture class.

// Lounge Stdio 2003

// 作者:边城浪子(QQ:16168666)

// E-mail: krh2001.lpfdiyvbb@163.com

//////////////////////////////////////////////////////////////////////

#include "stdafx.h"

#include "Picture.h"

#ifdef _DEBUG

#undef THIS_FILE

static char THIS_FILE[]=__FILE__;

#define new DEBUG_NEW

#endif

//////////////////////////////////////////////////////////////////////

// Construction/Destruction

//////////////////////////////////////////////////////////////////////

CPicture::CPicture()

:m_pPic(NULL), _h_him(0), _w_him(0), m_size(0,0)

{

}

CPicture::~CPicture()

{

Release();

}

void CPicture::Release()

{

if(m_pPic != NULL)

{

m_pPic-Release();

m_pPic = NULL;

_h_him = _w_him = 0;

m_size.cx = m_size.cy = 0;

}

}

BOOL CPicture::LoadPicture(LPCTSTR lpszResource, LPCTSTR lpszResType)

{

Release();

HINSTANCE hInst = AfxFindResourceHandle(lpszResource, lpszResType);

HRSRC hRsrc = ::FindResource(hInst, lpszResource, lpszResType);

if(hRsrc == NULL) return FALSE;

HGLOBAL hGlobal = LoadResource(hInst, hRsrc);

if(hGlobal == NULL) return FALSE;

DWORD dwSize = SizeofResource(hInst, hRsrc);

HGLOBAL hMem = ::GlobalAlloc(GMEM_MOVEABLE, dwSize);

if(hMem == NULL) return FALSE;

LPVOID pSrc = ::LockResource(hGlobal);

if(pSrc == NULL) {

::GlobalFree(hMem);

return FALSE;

}

LPVOID pDes = ::GlobalLock(hMem);

if(pDes == NULL){

//::GlobalUnlock(hGlobal);

::GlobalFree(hMem);

return FALSE;

}

memcpy(pDes, pSrc, dwSize);

//GlobalUnlock(hGlobal);

GlobalUnlock(hMem);

::FreeResource(hGlobal);

IStream* pStm = NULL;

CreateStreamOnHGlobal(hMem, TRUE, pStm);

if(!SUCCEEDED(OleLoadPicture(pStm,dwSize,TRUE,IID_IPicture,(LPVOID*)m_pPic)))

{

pStm - Release();

::GlobalFree(hMem);

pStm = NULL;

return FALSE;

}

pStm-Release();

::GlobalFree(hMem);

CalcSize();

return TRUE;

}

BOOL CPicture::LoadPictureFromFile(LPCTSTR lpszFileName)

{

Release();

CFile file;

if(!file.Open(lpszFileName, CFile::modeRead))

return FALSE;

DWORD dwSize = file.GetLength();

HGLOBAL hMem = ::GlobalAlloc(GMEM_MOVEABLE, dwSize);

if(hMem == NULL) return FALSE;

LPVOID pDes = ::GlobalLock(hMem);

if(pDes == NULL){

::GlobalFree(hMem);

return FALSE;

}

file.ReadHuge(pDes, dwSize);

file.Close();

GlobalUnlock(hMem);

IStream* pStm = NULL;

CreateStreamOnHGlobal(hMem, TRUE, pStm);

if(!SUCCEEDED(OleLoadPicture(pStm,dwSize,TRUE,IID_IPicture,(LPVOID*)m_pPic)))

{

pStm - Release();

::GlobalFree(hMem);

pStm = NULL;

return FALSE;

}

pStm-Release();

::GlobalFree(hMem);

CalcSize();

return TRUE;

}

void CPicture::CalcSize()

{

if(m_pPic == NULL) return;

m_pPic-get_Width(_w_him);

m_pPic-get_Height(_h_him);

CDC* pDC = CWnd::GetDesktopWindow()-GetDC();

m_size.cx = _w_him;

m_size.cy = _h_him;

pDC-HIMETRICtoDP(m_size);

CWnd::GetDesktopWindow()-ReleaseDC(pDC);

}

void CPicture::Draw(CDC* pDC, LPCRECT lprcDest, LPCRECT lprcSrc)

{

if(m_pPic)

{

CSize szOrig(lprcSrc-left, lprcSrc-top);

CSize szSrc(lprcSrc-right - lprcSrc-left, lprcSrc-bottom - lprcSrc-top);

pDC-DPtoHIMETRIC(szOrig);

pDC-DPtoHIMETRIC(szSrc);

m_pPic-Render(*pDC, lprcDest-left,lprcDest-top,lprcDest-right-lprcDest-left,

lprcDest-bottom-lprcDest-top, szOrig.cx, _h_him-szOrig.cy, szSrc.cx,

-szSrc.cy, NULL);

}

}

void CPicture::Draw(CDC* pDC, int xDest,int yDest, int cxDest, int cyDest ,

int xSrc ,int ySrc ,int cxSrc ,int cySrc)

{

Draw(pDC, CRect(xDest, yDest, xDest+cxDest, yDest+cyDest), CRect(xSrc, ySrc, xSrc+cxSrc, ySrc+cySrc));

}

Access不能删除表,它加入了一个或多个关系

对于 一个 已经关联到其他表字段的 字段 数值类型 修改 要极其慎重!

如果你确实要修改的话,首先 要 在关系视图中 把这个字段 与其他表的 关系删除!然后再修改、删除……

但是 要注意 修改字段的 数据类型 原有表中的数据 要受到相应的影响哦…………

关系 在 关系视图中 选中 右键 删除……

c语言数字图像处理怎么显示一张照片的像素值

#include stdio.h

#include windows.h

int main()

{

//变量

char title[255];//用于存放控制台窗口标题

HWND hwnd;//窗口的句柄,H:Handle

HDC hdc, hmemdc;//设备上下文句柄,DC:driver context

HBITMAP hbm;//图片的句柄

BITMAP bm;//图片结构体

RECT rect;//矩形 rectangle

//把控制台窗口调成100字符宽度,40行

system("mode con cols=100 lines=40");

//1.取得窗口的句柄

GetConsoleTitleA(title, 255);//获取控制台窗口的标题

hwnd = FindWindowA(NULL, title);//通过窗口标题取得该窗口的句柄

//获取窗口的高度和宽度

GetWindowRect(hwnd, rect);

//2. 获取画笔

hdc = GetDC(hwnd);

/* if(!hdc)

printf("No val\n");

else

printf("have\n");

TextOutA(hdc, 300, 400, "Hello world", strlen("Hello world"));*/

hmemdc = CreateCompatibleDC(hdc);//创建一个兼容的DC

//3.加载图片

hbm = (HBITMAP)LoadImageA(NULL, "123.bmp", IMAGE_BITMAP, 0, 0,

LR_LOADFROMFILE);

GetObject(hbm, sizeof(BITMAP), bm);//得到图片信息

//4.把图片放入兼容DC中

SelectObject(hmemdc, hbm);

//5.在窗口上画出图片

BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hmemdc, 0, 0, SRCCOPY);

DeleteObject(hbm);

DeleteObject(hmemdc);

ReleaseDC(hwnd, hdc);

return 0;

}

什么是RTF格式

RTF格式

RTF格式是许多软件都能够识别的文件格式。比如Word、WPSOffice、Excel等都可以打开RTF格式的文件,这说明这种格式是较为通用的。

RTF是RichTextFormat的缩写,意即多文本格式。这是一种类似DOC格式(Word文档)的文件,有很好的兼容性,使用Windows“附件”中的“写字板”就能打开并进行编辑。使用“写字板”打开一个RTF格式文件时,将看到文件的内容;如果要查看TRF格式文件的源代码,只要使用“记事本”将它打开就行了。这就是说,你完全可以像编辑HTML文件一样,使用“记事本”来编辑RTF格式文件。

对普通用户而言,RTF格式是一个很好的文件格式转换工具,用于在不同应用程序之间进行格式化文本文档的传送。

(责任编辑:IT教学网)

更多

推荐其他WEB语言文章