有时候我们需要在Excel中插入一些图片,例如,产品展示、人物介绍等。这些都需要将图片嵌入到Excel单元格中,否则后期需要处理工作簿,很容易造成图片产生错位,一是增加自己工作量,另外会给他人带来不好的体验。这样就与Excel中插入图片的目的背道而驰。
怎么才能将图片嵌入到Excel单元格中,并自动适应单元格的大小呢?其实这个问题没有那么复杂,只需简单三步就可以轻松设置完成,抓紧时间来尝试一下吧!
有时候我们需要在Excel中插入一些图片,例如,产品展示、人物介绍等。这些都需要将图片嵌入到Excel单元格中,否则后期需要处理工作簿,很容易造成图片产生错位,一是增加自己工作量,另外会给他人带来不好的体验。这样就与Excel中插入图片的目的背道而驰。怎么才能将图片嵌入到Excel单元格中,并自动适应单元格的大小呢?其实这个问题没有那么复杂,只需简单三步就可以轻松设置完成,抓紧时间来尝试一下吧!第...
//插入
图片
void COperExcel::XlsInsertPictrue(const CString &strPicPath,float xPos, float yPos,float picWidth, float picHeight)
if (!xlsAppIsInit())
return;
if (strPicPath.IsEmpty())
参考网站如下:
参考网址:https://github.com/hxj9102/table2excel
插件下载及说明:https://www.npmjs.com/package/excel4node
https://github.com/natergj/excel4node
主要安装插件
npm i excel4node
首先安装excel4node
安装完成后目录下的
package.json
package-lock.json
内容会
自动
修改(
自动
添加版本和路径)
package.js
字符画是一系列字符的组合,我们可以把字符看作是比较大块的像素,一个字符能表现一种颜色(为了简化可以这么理解),字符的种类越多,可以表现得颜色也越多,
图片
也会更有层次感!
那么我们要转换一张彩色的
图片
,这么多的颜色,要怎么对应到单色的字符画上去?这里就要介绍灰度值的感念了!
详细介绍参考:https://biyezuopinvip.blog.csdn.net/article/details/130082462
1.打开AltiumDesigner,点击左上角选项DXP,选择runscript
2接下来点击弹出框左下角的Browse。选择第一步下载的插件文件夹
中
的PCBLogoCreator.PRJSCR
3接下来在弹出的对话框
中
双击RunConverterScript
4接着会弹出一个对话框,载入
图片
logo并选择
图片
需要放置的PCB层,我选择的是顶层丝印层,接下里点击Convert
5最后在
自动
生成的PCB
中
就有了
图片
logo了
注意:::::转成单色BMP使用
CBrush brush(0);
CBrush* pOldBrush = pDC->SelectObject(&brush);
pDC->PatBlt(0, 0, cx, cy, PATCOPY);
CDC memDC;
memDC.CreateCompatibleDC(pDC);
CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC, cx, cy);
CBitmap* pOldBmp = memDC.SelectObject(&bmp);
memDC.BitBlt(0, 0, cx, cy, pDC, 0, 0, SRCCOPY);
CBitmap monoBmp;
monoBmp.CreateBitmap(cx, cy, 1, 1, NULL);
CDC monoDC;
monoDC.CreateCompatibleDC(pDC);
CBitmap* pOldMonoBmp = monoDC.SelectObject(&monoBmp);
COLORREF clrText = pDC->GetTextColor();
COLORREF clrBk = pDC->GetBkColor();
for (int y = 0; y < cy; y++)
for (int x = 0; x < cx; x++)
COLORREF clr = memDC.GetPixel(x, y);
BYTE r = GetRValue(clr);
BYTE g = GetGValue(clr);
BYTE b = GetBValue(clr);
BYTE gray = (BYTE)(0.3 * r + 0.59 * g + 0.11 * b);
if (gray > 128)
monoDC.SetPixel(x, y, RGB(255, 255, 255));
monoDC.SetPixel(x, y, RGB(0, 0, 0));
monoDC.SelectObject(pOldMonoBmp);
monoDC.DeleteDC();
memDC.SelectObject(pOldBmp);
memDC.DeleteDC();
pDC->SelectObject(pOldBrush);
mono.ReleaseDC();
return SUCCEEDED(mono.Save(lpszMonoFile, Gdiplus::ImageFormatBMP));
void Test()
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
_T("Bitmap Files|*.bmp|All Files|*.*||"), NULL, 0);
if (dlg.DoModal() == IDOK)
CString strJpgFile = dlg.GetPathName();
CString strMonoFile = strJpgFile.Left(strJpgFile.GetLength() - 4) + _T("_mono.bmp");
if (ConvertJpgToMono(strJpgFile, strMonoFile))
AfxMessageBox(_T("Succeeded!"));
AfxMessageBox(_T("Failed!"));
其
中
,ConvertJpgToMono函数接受两个参数,第一个是JPG
图片
的文件路径,第二个是转换后的单色位图的文件路径。函数内部使用了CImage、CDC、CBitmap等MFC类和GDI+库的函数实现了JPEG
图片
到单色位图的转换。
Test函数是一个测试函数,用于在对话框
中
选择JPG
图片
文件并转换成单色位图。
### 回答2:
MFC(Microsoft Foundation Classes)是一套用于
Windows
应用程序开发的C++类库,可以快速创建
Windows
图形界面应用程序。下面是一个使用MFC将JPG
图片
转换为单色位图的代码:
1. 首先,你需要在MFC应用程序
中
创建一个用于显示
图片
的控件,比如一个CStatic控件。
2. 在C++代码
中
,使用CImage类来加载和操作
图片
。使用Load函数加载JPG
图片
。
```cpp
CImage image;
image.Load(_T("image.jpg"));
3. 然后,调整
图片
的
大小
以
适应
控件的
大小
。比如,如果控件的
大小
为(width, height),你可以使用Rescale函数调整
图片
的
大小
。
```cpp
image.Rescale(width, height);
4. 接下来,创建一个新的位图,并将
图片
绘制到位图上。
```cpp
CBitmap bitmap;
CDC* pDC = GetDC();
CDC memoryDC;
memoryDC.CreateCompatibleDC(pDC);
bitmap.CreateCompatibleBitmap(pDC, width, height);
CBitmap* pOldBitmap = memoryDC.SelectObject(&bitmap);
memoryDC.BitBlt(0, 0, width, height, pDC, 0, 0, SRCCOPY);
image.Draw(pDC->GetSafeHdc(), 0, 0, width, height);
memoryDC.SelectObject(pOldBitmap);
ReleaseDC(pDC);
5. 最后,将位图转换为单色位图。
```cpp
BITMAP bmp;
bitmap.GetBitmap(&bmp);
CDC dc;
dc.CreateCompatibleDC(NULL);
CBitmap bitmapMono;
bitmapMono.CreateBitmap(bmp.bmWidth, bmp.bmHeight, 1, 1, NULL);
CBitmap* pOldBitmap = dc.SelectObject(&bitmapMono);
dc.BitBlt(0, 0, bmp.bmWidth, bmp.bmHeight, memoryDC, 0, 0, SRCCOPY);
dc.SelectObject(pOldBitmap);
现在,你可以使用CStatic控件的SetBitmap函数将单色位图显示在界面上。
```cpp
m_staticImage.SetBitmap(bitmapMono);
以上就是MFC JPG
图片
转单色位图的代码。需要注意的是,这只是一个简单的示例,实际项目
中
可能需要更多的错误处理和
适应
不同场景的调整。
### 回答3:
MFC是Microsoft Foundation Class的缩写,是一种用于开发
Windows
桌面应用程序的C++类库。在MFC
中
,要实现将JPG
图片
转换为单色位图的功能,可以采用以下代码:
1. 首先,需要包含MFC的相关头文件:
#include "stdafx.h"
#include "resource.h"
#include <GdiPlus.h>
using namespace Gdiplus;
2. 创建MFC对话框应用程序。在对话框类的头文件
中
添加类成员变量:
CStatic m_StaticCtrl; // 用于显示单色位图的静态控件
3. 在对话框类的cpp文件
中
,实现以下代码:
void CMyDialog::OnBnClickedConvertButton()
// 打开对话框选择JPG
图片
文件
CFileDialog dlg(TRUE, _T("JPG"), NULL, OFN_FILEMUSTEXIST, _T("JPG Files (*.jpg)|*.jpg||"), this);
if (dlg.DoModal() == IDOK)
CString filePath = dlg.GetPathName();
// 使用GDI+加载JPG
图片
Gdiplus::Bitmap bitmap(filePath);
// 创建单色位图
Gdiplus::Bitmap monoBitmap(bitmap.GetWidth(), bitmap.GetHeight(), PixelFormat1bppIndexed);
Graphics graphics(&monoBitmap);
graphics.DrawImage(&bitmap, 0, 0);
// 在静态控件上显示单色位图
CRect rect;
m_StaticCtrl.GetClientRect(&rect);
HDC dc = m_StaticCtrl.GetDC()->GetSafeHdc();
Graphics display(dc);
display.DrawImage(&monoBitmap, rect.left, rect.top, rect.Width(), rect.Height());
4. 在OnInitDialog函数
中
,添加以下代码初始化静态控件:
BOOL CMyDialog::OnInitDialog()
CDialogEx::OnInitDialog();
// TODO: 在此添加额外的初始化
m_StaticCtrl.SubclassDlgItem(IDC_STATIC_CTRL, this); // IDC_STATIC_CTRL是在资源文件
中
定义的静态控件ID号
return TRUE; // return TRUE unless you set the focus to a control
以上代码实现了在MFC
中
将JPG
图片
转换为单色位图的功能。用户点击按钮后,可以选择JPG
图片
文件,然后程序使用GDI+加载
图片
,创建单色位图,并将其显示在一个静态控件上。