`
hcmfys
  • 浏览: 356436 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

加入图片

 
阅读更多

<!-- [if !mso]> <style> v/:* {behavior:url(#default#VML);} o/:* {behavior:url(#default#VML);} w/:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--><!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!-- [if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->

步骤简要如下:

1. 创建ClmageList 对象,指定图片的宽度和高度

2. CImageList 对象传递给CListCtrl 对象

3.ClistCtrl 增加item 时,将图片ID 和文字一起传入

具体代码如下:

ListImage.cpp 代码如下

// ListImage.cpp : implementation file
//

#include "stdafx.h"
#include "practise.h"
#include "ListImage.h"
#define THUMWIDTH 75
#define THUMHEIGHT 55

// ListImage dialog

IMPLEMENT_DYNAMIC(ListImage, CDialog)

ListImage::ListImage(CWnd* pParent /*=NULL*/)
: CDialog(ListImage::IDD, pParent)
{

}

ListImage::~ListImage()
{
}

void ListImage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST1, m_List);
DDX_Control(pDX, IDC_EDIT2, m_edit2);
}


BEGIN_MESSAGE_MAP(ListImage, CDialog)
ON_BN_CLICKED(IDC_BUTTON1, &ListImage::OnBnClickedButton1)
ON_BN_CLICKED(IDOK, &ListImage::OnBnClickedOk)
END_MESSAGE_MAP()


// ListImage message handlers
BOOL ListImage::OnInitDialog()
{
CDialog::OnInitDialog();

// TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void ListImage::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
//
文件对话框

CString FilePath;
CFileDialog FileDialog(true, _T(""), _T(""), OFN_EXPLORER,
_T("
所有文件(*.*)|*.*||"), this);

// 显示对话框
if(FileDialog.DoModal() == IDOK)
{
FilePath = FileDialog.GetPathName();
int g=FilePath.ReverseFind('//');
FilePath=FilePath.Left(g+1);
m_edit2.SetWindowText(FilePath);

}
else
{
return;
}
//
清楚m_ImageList 对象和m_List
if (m_ImageList!=NULL)
{
for(int kk=0;kk<m_ImageList.GetImageCount();kk++)
m_ImageList.Remove(kk);
m_List.DeleteAllItems();
}
else
{
m_ImageList.Create(THUMWIDTH,THUMHEIGHT, ILC_COLORDDB|ILC_MASK, 20, 1);
m_List.SetImageList(&m_ImageList, LVSIL_NORMAL);
m_List.SetImageList(&m_ImageList, LVSIL_SMALL);
}
m_List.SetRedraw(false);
CString strDir=FilePath+_T("*.*");
//strDir.Format("%s%s",FilePath,L"*.*");
//_T("D://happiness//
风景桌面//*.*");

int i=0,cn=0,j=0;
SHFILEINFO finfo;
CString fileName;
CString filePath2;
HANDLE hFind;
WIN32_FIND_DATA fd ;
hFind=::FindFirstFile((LPCTSTR)strDir,&fd);
if(hFind==INVALID_HANDLE_VALUE)return;
do
{
if ( !wcscmp(fd.cFileName, _T(".")) || !wcscmp(fd.cFileName, _T("..")))continue;
if(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)continue;
fileName=fd.cFileName;
filePath2=FilePath+fileName;
i=fileName.Find(_T(".jpg"),0);
//
加载jpg,jpeg,gif 格式的图片
if (i==-1)
i=fileName.Find(_T(".jpeg"),0);
if (i==-1)
i=fileName.Find(_T(".JPG"),0);
if (i==-1)
i=fileName.Find(_T(".JPEG"),0);
if (i==-1)
i=fileName.Find(_T(".gif"),0);
if (i==-1)
i=fileName.Find(_T(".GIF"),0);
if (i==-1)
i=fileName.Find(_T(".BMP"),0);
if (i==-1)
i=fileName.Find(_T(".bmp"),0);
if (i!=-1)
{
//Creating thumbnail image for the file
HBITMAP bitm=LoadPicture(filePath2);
if (bitm!=NULL)
{

CBitmap* pImage = NULL;
pImage = new CBitmap();
pImage->Attach(bitm);
int imgP=m_ImageList.Add(pImage,RGB(0,0,0));
//Link to the added listview item
m_List.InsertItem(cn,fileName,imgP);
}
}
//
加载icon 图片
i=fileName.Find(_T(".ico"),0);
if (i==-1)
i=fileName.Find(_T(".ICO"),0);
if (i==-1)
i=fileName.Find(_T(".rc"),0);
if (i==-1)
i=fileName.Find(_T(".rc2"),0);
if (i!=-1)
{
::SHGetFileInfo(filePath2,0,&finfo,sizeof(SHFILEINFO),SHGFI_ICON);
m_ImageList.Add(finfo.hIcon);//
加入图标
m_List.InsertItem(cn,fileName,cn);
}
cn++;
}while(::FindNextFile(hFind,&fd));
FindClose(hFind);
m_List.SetRedraw(true);
Invalidate();
UpdateWindow();
}


HBITMAP ListImage::LoadPicture(CString mFile)
{
CString pFSize;
WCHAR wpath[MAX_PATH];
// MultiByteToWideChar(CP_ACP, 0,lpszBuf, -1, wpath, MAX_PATH);
IPicture* pPic;
OleLoadPicturePath(T2OLE((LPTSTR)(LPCTSTR)mFile), NULL, NULL, NULL, IID_IPicture,(LPVOID*)&pPic);

if (pPic==NULL) return NULL;
HBITMAP hPic = NULL;
pPic->get_Handle((UINT*)&hPic);

long nWidth=THUMWIDTH;
long nHeight=THUMHEIGHT;

long mWid,mHei;
pPic->get_Height(&mHei);
pPic->get_Width(&mWid);

HBITMAP hPicRet = (HBITMAP)CopyImage(hPic, IMAGE_BITMAP, nWidth, nHeight , LR_COPYDELETEORG);

// Create Brushes for Border and BackGround
HBRUSH hBrushBorder=::CreateSolidBrush(RGB(192, 192, 192));
HBRUSH hBrushBk=::CreateSolidBrush(RGB(255, 255, 255));

// Border Size
RECT rcBorder;
rcBorder.left=rcBorder.top=0;
rcBorder.right=THUMWIDTH;
rcBorder.bottom=THUMHEIGHT;

const float fRatio=(float)THUMHEIGHT/THUMWIDTH;

int XDest, YDest, nDestWidth, nDestHeight;
// Calculate Rect to fit to canvas
const float fImgRatio=(float)mHei/mWid;
if(fImgRatio > fRatio)
{
nDestWidth=(THUMHEIGHT/fImgRatio);
XDest=(THUMWIDTH-nDestWidth)/2;
YDest=0;
nDestHeight=THUMHEIGHT;
}
else
{
XDest=0;
nDestWidth=THUMWIDTH;
nDestHeight=(THUMWIDTH*fImgRatio);
YDest=(THUMHEIGHT-nDestHeight)/2;
}

CClientDC cdc(this);
HDC hDC=::CreateCompatibleDC(cdc.m_hDC);
HBITMAP bm = CreateCompatibleBitmap(cdc.m_hDC, THUMWIDTH, THUMHEIGHT);
HBITMAP pOldBitmapImage = (HBITMAP)SelectObject(hDC,bm);
// Draw Background
::FillRect(hDC, &rcBorder, hBrushBk);

// Draw Border
::FrameRect(hDC, &rcBorder, hBrushBorder);

HBITMAP hBmReturn= (HBITMAP)::SelectObject(hDC, pOldBitmapImage);

CDC hdcSrc, hdcDst;

hdcSrc.CreateCompatibleDC(NULL);
hdcDst.CreateCompatibleDC(NULL);

// Load the bitmaps into memory DC
CBitmap* hbmSrcT = (CBitmap*) hdcSrc.SelectObject(hPicRet);
CBitmap* hbmDstT = (CBitmap*) hdcDst.SelectObject(hBmReturn);

// This call sets up the mask bitmap.
hdcDst.BitBlt(XDest,YDest,nDestWidth, nDestHeight, &hdcSrc,0,0,SRCCOPY);
//hdcDst.StretchBlt(XDest,YDest,nDestWidth, nDestHeight, &hdcSrc,0,0,48,48,SRCCOPY);

pOldBitmapImage = (HBITMAP)SelectObject(hdcDst.m_hDC,bm);

// Release used DC and Object
DeleteDC(hDC);
DeleteObject(hBrushBorder);
DeleteObject(hBrushBk);

return pOldBitmapImage;

}

void ListImage::OnBnClickedOk()
{
// TODO: Add your control notification handler code here
OnOK();
}
----------------------------------------------------------------------------------------------------

ListImage.h 代码如下

#pragma once
#include "afxcmn.h"
#include "afxwin.h"


// ListImage dialog

class ListImage : public CDialog
{
DECLARE_DYNAMIC(ListImage)

public:
ListImage(CWnd* pParent = NULL); // standard constructor
virtual ~ListImage();
CImageList m_ImageList;
HBITMAP ListImage::LoadPicture(CString mFile);

// Dialog Data
enum { IDD = IDD_DIALOG1 };

protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedButton1();
CListCtrl m_List;
CEdit m_edit2;
afx_msg void OnBnClickedOk();
};

CXXXApp::InitInstance()
使用 ASSERT(AfxOleInit() != FALSE ); //Initialize COM libraries
m_List.SetBkImage("c:/background2.bmp");
m_List.SetTextBkColor(CLR_NONE); //
设置背景透明

首先将你的 CListCtrl 风格设置为ICON 风格

CImageList m_ImageList;

CListCtrl m_list;

m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

m_list.SetIconSpacing(CSize(140, 130)); //set pictures spacing

//wide of picture is 120,height is 90

m_ImageList.Create(120,90,ILC_COLORDDB|ILC_COLOR32,1,1);

m_list.SetImageList(&m_ImageList,LVSIL_NORMAL); //CImageList associates CListCtrl

// 此处用 GDI+,

Bitmap bmp( 文件的相对或绝路径 ); // 传入图片路径

int sourceWidth = 120; // 获得图片宽度, 这个120 和创建的120 保持相同。

int sourceHeight = bmp.GetHeight(); // 获得图片宽度

if(sourceHeight>120) / / m_ImageList.Create(120 ) 有很大关系,如果小于设

// 定的宽度,图片将无法显示。

{

sourceHeight=120;

}

else

{

sourceHeight=bmp.GetHeight();

}

Bitmap* pThumbnail = (Bitmap*)bmp.GetThumbnailImage(sourceWidth , sourceHeight , NULL, NULL); // 设定缩略图的大小

HBITMAP hBmp;

pThumbnail->GetHBITMAP(Color(255,255,255),&hBmp);

CBitmap *pImage = CBitmap::FromHandle(hBmp); // 转换成 CBitmap 格式位图

_wsplitpath(*photo_iter ,drive,dir,fname,ext );

wcscpy_s(itemName,fname);

wcscat_s(itemName,ext);

int a=m_imageList.Add(pImage,RGB(255,255, 255));

m_pictureList.InsertItem(a,itemName,a); // itemName, 你自己设法得到图片片的名字。名字会显示在图片下面。

// 这里要注意,一定要用 InsertItem(a,itemName,a); 之前的 m_list 不需要在 insert(I,_T(””)); 更不需要 setItemText(item,subItem,Text), 这可能会导致插入相同的图片。

顺便说下 GDI 这个鬼东西,不懂原理,直接说应用。会用的高手见笑。 VS2008 自带了 gdi+ ,不需要下载。

1 .声明头文件,在 stdafx 中,或者能被你编译到其他地方都可以。

#include <gdiplus.h> //GDI+ 声明,可以 GDI/GDI+ 混合使用

#pragma comment(lib, "gdiplus.lib")

using namespace Gdiplus;

2 .初始化 GDI+,

CMyApp: public CWinApp

{

…………

ULONG_PTR m_gdiplusToken;

…………

};

BOOL CMyApp::InitInstance() // 在这个函数中添加

{

// 初始化 GID+

GdiplusStartupInput gdiplusStartupInput;

GdiplusStartup( &m_gdiplusToken,&gdiplusStartupInput,NULL );

}

int CMobilePCApp::ExitInstance() // 释放 GDI+ 调用,这个函数需要自己写。别忘了声明。

{

GdiplusShutdown( m_gdiplusToken );

return CWinApp::ExitInstance();

}

当时这样做了后,我的 GDI+ 还是不能用,添加图片时候 Bitmap bmp( 文件的相对或绝路径 ); bmp 这个东西无效,里面有个空指针的东西,可见 GDI+ 并没有初始化。后来先,初始化 GDI+ 这段代码没有执行到。好了,那就把初始化的代码放到可以执行到的地方。

在主对话框的 InitInstance() 中添加

// 初始化 GID+

GdiplusStartupInput gdiplusStartupInput;

GdiplusStartup( &m_gdiplusToken,&gdiplusStartupInput,NULL );

好了, GDI+ 可以使用了,可以添加缩略图了。截图一张。

每行图片的数量随窗口大小自动排列。按下面设置属性。

CListCtrl 属性
Alignment
设置为 top
Auto Arrage
设置为 True.

如有疑问,请留言。

//ClimageList 无效的原因 1 creare 的大小; 2 ,如果是被重写的类,在 drawItem 重新绘制,不能在关联 CImageList

.h
CListCtrlCl m_dataStatisticsList;
CImageList m_DataImageList;

.cpp

m_DataImageList.Create(44,30,ILC_COLOR24,2,2);
//bmp.Attach(tempBitmap);
bmp.LoadBitmap(IDB_CONTACT);
int a=m_DataImageList.Add(&bmp,RGB(255,255,255));
int b=m_DataImageList.GetImageCount();

m_dataStatisticsList.SetImageList(&m_DataImageList,LVSIL_SMALL);
for(int i=0;i<5;i++)
{
m_dataStatisticsList.InsertItem(i,_T(""),0); //0
CImageList 的第一个图标。
}


分析:在 m_DataImageList.Add(&bmp,RGB(255,255,255)); 之后,得到的 CImageList 的元素数量 b 还为 0 ,原因可能在于 m_DataImageList.Create(44,30,ILC_COLOR24,2,2); 前两个参数图片的宽度和长度大于了图片本身,就会 add 失败。

add 成功后, b 将成为 1 但是 m_dataStatisticsList.InsertItem(i,_T(""),0); 还不见图片,插入的文字倒是没有问题。 这个原因在于 m_dataStatisticsList 是一个被重写的类 CListCtrlCl 的对象。在 CListCtrlCl 中的 drawItem 没有绘出图片。

CListCtrl MFC 的控件,所以只支持 HBITMAP 图片,这是我们可以将 iplimage* 转化成 HBITMAP;

   // 变量声明部分; ////////////////////////////////////////////////// /////////////////////////////////////////////////// ///////////

   CListCtrl m_list;

   CImageList* m_pImgList;

   /////////// 初始化,将 bitmap 关联到 listctrl ////////////////////////////////////////////////// //////////////////////////////

   m_pImgList=new CImageList;

   m_pImgList->Create (200,200,ILC_COLOR32,20,20);// 前两个参数是设置图象大小的

   m_pImgList->SetBkColor(RGB(125,125,0));

   m_list.SetImageList(m_pImgList,0);// 将设置的位图列表选入 ListView 中去

   /////// 打开对话框添加图片 ////////////////////////////////////////////////// /////////////////////////////////////////////////// /

    char m_szFilter[] = "bmp files(*.bmp)|*.bmp|jpg files(*.jpg)|*.jpg|png files(*.png)|*.png|tiff files(*.tiff)|*.tiff|All files(*.*)|*.*||";

   CFileDialog fd(TRUE,NULL,NULL,OFN_FILEMUSTEXIST|OFN_HIDEREADON LY|OFN_ALLOWMULTISELECT,

   m_szFilter);

   BOOL nResult = (fd.DoModal() == IDOK) ? TRUE : FALSE;

   if (!nResult) // 点击 cancel

   {

   return;

   }

   // 把文件名称放到 CStringList

   POSITION pos = fd.GetStartPosition();

   while (pos)

   {

   CString currentFileName = fd.GetNextPathName(pos);

   //m_picNameList.AddTail(fileName);

   /* 显示位图文件 */

   HBITMAP hBitmap;

   CBitmap pBitmap;

   m_list.InsertItem(m_picNum, currentFileName, m_picNum);

   IplImage* image, *pImgGray;

   image = cvLoadImage(currentFileName,1); //IplImage2Bitmap

   hBitmap = IplImage2Bitmap(image);

   pBitmap.Attach ( hBitmap );

   m_pImgList->Add (&pBitmap, RGB(0,0,0));

   DeleteObject(hBitmap);

   pImgGray = cvCreateImage(cvGetSize(image),image->depth,1);

   cvCvtColor(image,pImgGray,CV_RGB2GRAY);

   m_lImgsList.push_back(pImgGray);

   cvReleaseImage( );

   // 增加图片数量

   m_picNum++;

   }

   // 删除 listctrl 中的图片 ////////////////////////////////////////////////// ///////////////////////////////////////////////////

   // 获取被删除图片的位置

   POSITION pos = m_list.GetFirstSelectedItemPosition();

   if(pos == NULL)

   {

   // MessageBox(" 请选择一项在删除 !"," 提示 ",MB_ICONINFORMATION);

   return;

   }

   int currentIndex = m_list.GetNextSelectedItem(pos);

   m_list.DeleteItem(currentIndex);

   // 重画被删图片以后的项目

   //BOOL b = m_pImgList->Remove(currentIndex);

   m_list.RedrawItems(currentIndex, m_picNum);

   // 减少一张图片

   m_picNum--;

   // 注: clistctrl Auto Arrange 属性设为 ture ,这样,在删除图片的时候可以刷新(用后面的图像填充当前位置)

分享到:
评论

相关推荐

    java实现在Excel中插入图片

    以下我们将重点讨论如何使用XSSF来插入图片。 1. **引入Apache POI依赖** 在Java项目中,首先需要引入Apache POI的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.apache...

    如何在word中插入图片的同时插入图片的文件名.pdf

    如何在 Word 中插入图片的同时插入图片的文件名 本文将详细介绍如何在 Word 中插入图片的同时插入图片的文件名,包括使用 VBA 代码来遍历文件夹、获取文件列表,并将图片插入 Word 文档中。 一、使用 VBA 代码遍历...

    C#采用OpenXml给word里面插入图片

    总的来说,C#通过OpenXml操作Word文档,尤其是插入图片,涉及了文件操作、枚举类型、XML结构理解和API调用等多个方面。理解这些细节对于开发高效、可靠的文档处理程序至关重要。通过不断实践和学习,开发者可以更好...

    oracle向数据库里插入图片

    在Oracle数据库中插入图片涉及到BLOB(Binary Large Object)数据类型,这是Oracle用来存储大量二进制数据,如图片、音频或视频文件等的一种方式。本文将详细介绍如何在Oracle数据库中插入、查询和管理图片。 首先...

    freemarkerdemo 生成word 插入图片

    在这个"freemarkerdemo生成word插入图片"的示例中,我们主要探讨如何利用Freemarker来创建Word文档,并且将图片集成到这些文档中。这个过程涉及到几个关键的技术点: 1. **Freemarker基础知识**:Freemarker是一个...

    EXCEL 或WPS 自动插入图片代码

    在Excel或WPS中,自动插入图片是一项非常实用的功能,特别是在处理大量数据并需要与之相关的图像时。这里,我们主要探讨的是通过编程方式实现这一功能,主要涉及到的知识点是宏(Macros)和VBA(Visual Basic for ...

    latex代码插入图片

    在LaTeX中插入图片是创建专业文档时必不可少的一项技能,特别是在制作报告、论文或演示文稿时。LaTeX提供了一种高效且灵活的方式来管理和展示图形,使得整个文档的排版保持一致性和美观性。以下是对如何在LaTeX中...

    java实现在pdf模板的指定位置插入图片

    Java实现PDF模板指定位置插入图片 Java语言是当今最流行的编程语言之一,对于PDF文档的处理有着非常广泛的应用。本文将详细介绍如何使用Java语言在PDF模板的指定位置插入图片,实现对PDF文档的自定义和编辑。 ...

    利用java往excel中插入图片

    本篇文章将详细介绍如何利用Java和Apache POI库向Excel工作表中插入图片。 首先,我们需要理解Apache POI的工作原理。POI提供了一个名为HSSFPatriarch的类,它是Excel中的图形绘制容器,可以用于插入图片。对于....

    可以在页眉中插入图片的NPOI

    在这个特定的场景中,我们关注的是NPOI在Excel页眉中插入图片的能力。虽然标题提到的是“NPOI可以在页眉中插入图片”,但描述也指出这种方式是“inline”的,可能不完全符合期望的效果。这意味着插入的图片可能不会...

    通过POI将PPT插入图片并导出实例

    在这个实例中,我们将深入探讨如何利用POI库来创建一个PowerPoint演示文稿,并在其中插入图片。这个过程涉及到多个步骤,包括设置工作簿,创建幻灯片,以及添加图片到幻灯片。 首先,我们需要在项目中引入Apache ...

    POI向excel中插入图片

    在本文中,我们将深入探讨如何使用POI库向Excel工作簿中插入图片。这将涵盖相关的API,步骤以及一些实用技巧。 首先,我们需要理解Excel的内部结构。在Excel文件中,图片是以OLE对象的形式存储的。POI提供了...

    c#向word文件插入图片

    `AddPicture()`方法用于在指定的范围内插入图片。`false`表示不链接到源文件,`true`表示调整图片大小以适应文本框。 4. **调整图片大小和位置**(可选): ```csharp inlineShape.Width = 500; // 设置宽度 ...

    Dev17.1版本RichEditControl 表格插入与合并,插入图片

    以下是关于"Dev17.1版本RichEditControl 表格插入与合并,插入图片"这一主题的详细知识点: 1. **RichEditControl介绍**: RichEditControl是DevExpress提供的一个高级文本编辑组件,它不仅支持基本的文字编辑,还...

    嵌入式notepad可插入图片

    "嵌入式notepad可插入图片"这个特性表明,这里所指的Notepad并非我们通常在Windows操作系统中见到的那个基本文本编辑器,而是一个定制化的版本。这个版本的Notepad扩展了功能,允许用户在文本文件中插入图像。这在...

    C#工程向excel中插入图片

    在C#编程环境中,利用Microsoft Office Interop库可以实现向Excel工作簿中插入图片的功能。这个项目"OfficeRedevelopment"就是针对这一需求而设计的,适用于VS2010及更高版本的Visual Studio。下面将详细介绍如何在...

    excel2007插入图片

    在Excel 2007中插入图片是进行数据可视化或创建报告时常用的功能。这个过程简单易行,但包含了一些可以提升工作效率和效果的小技巧。下面将详细介绍如何在Excel 2007中插入图片,并探讨相关的知识点。 首先,打开...

    duilib richedit插入图片

    2. **插入图片**:在RichEdit中插入图片,通常需要利用`EM_STREAMIN`和`EM_STREAMOUT`消息,配合内存流对象(如IStream)来实现。你需要创建一个内存流,将图片数据写入其中,然后发送`EM_STREAMIN`消息到RichEdit...

    PyQt5 QTable插入图片并动态更新的实例

    ### PyQt5 QTableWidget 插入图片并动态更新详解 #### 一、引言 在图形用户界面(GUI)开发中,使用PyQt5进行应用程序设计时,经常会遇到需要在`QTableWidget`中插入图片并实现动态更新的需求。本文将详细介绍如何...

    在Altium Designer PCB 中插入图片的方法

    本文将详细介绍在Altium Designer PCB中插入图片的具体步骤与技巧,帮助用户更高效地完成设计工作。 ### 一、准备工作 #### 1. 图片格式转换 在Altium Designer中插入图片的第一步是确保图片格式正确。由于Altium ...

Global site tag (gtag.js) - Google Analytics