transparentblt

时间:2024-07-24 12:10:18编辑:优化君

怎么将png格式图片转成bmp的

怎么把PNG图片转BMP图片?我们可以使用【风云图片格式转换器】完成。在我们日常娱乐和日常工作中,经常会需要将图片格式进行转换。【风云图片格式转换器】可以完成这项转换,支持HEIC转换成JPG/PNG等图片格式, JPG/PNG/BMP等图片格式之间一键互转,支持批量操作  支持JPG/PNG/BMP等常规图片格式一键压缩,快捷高效。

windows编程中使用TransparentBlt效果怎么消除白边

TransparentBlt 函数在Windows98/Windows2000以上版本运行,系统中需要包含 Msimg32.dll,使用时可以链接 Msimg32.lib。
Windows98下的TransparentBlt会产生资源泄漏,所以不建议在WIN98下使用该函数。
TransparentBlt函数原型如下:
BOOL TransparentBlt(
HDC hdcDest, // 目标DC
int nXOriginDest, // 目标X偏移
int nYOriginDest, // 目标Y偏移
int nWidthDest, // 目标宽度
int hHeightDest, // 目标高度
HDC hdcSrc, // 源DC
int nXOriginSrc, // 源X起点
int nYOriginSrc, // 源Y起点
int nWidthSrc, // 源宽度
int nHeightSrc, // 源高度
UINT crTransparent // 透明色,COLORREF类型
);
使用例子:
CBitmap DispBmp;
CBitmap *OldBmp;
CDC SourceDC;
DispBmp.LoadBitmap("TEST_BITMAP");//如果是IDB_XXX则不需加引号!
SourceDC.CreateCompatibleDC(PDC);
OldBmp = SourceDC.SelectObject(&DispBmp);
::TransparentBlt(PDC->m_hDC,0, 0,128, 128, SourceDC.m_hDC,0,0,128,128,RGB(0,0,0));
SourceDC.SelectObject(OldBmp);

要注意的是TransparentBlt函数使用的位图是8位或者24位的。

此外,还有两个相近的函数:StretchBlt 和 BitBlt,那么他们的区别在何处?
BOOL StretchBlt //此函数将一个位图资源从一个矩形区域拷贝到另一个矩形区域,即缩放位图,但不能指定透明色
( int x, //指定目的矩形区域左上角的X坐标
int y, //指定目的矩形区域左上角的Y坐标
int nWidth, //指定目的矩形区域的宽度
int nHeight, //指定目的矩形区域的高度
CDC* pSrcDC,
int xSrc, //指定源矩形区域左上角的X坐标
int ySrc, //指定源矩形区域左上角的Y坐标
int nSrcWidth, //指定源矩形区域的宽度
int nSrcHeight, //指定源矩形区域的高度
DWORD dwRop //此参数参考MSDN,SRCCOPY类型为直接拷贝 );


BOOL BitBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop ); //此函数同样用来拷贝位图资源,但不具备缩放功能。


也就是说:bitblt直接按你指定的大小输出源dc到目标dc,而strechblt会调整你源dc大小,使之适应你所指定的目标dc大小,再输出。strechblt输出的图总是能够充填满你指定的目标DC区域,而bitblt输出的图无法布满目标dc制定区域。


VB6的函数问题

WinHelp属于API函数,包含在文件user32.dll中,自定义的WinHelp函数是没有用的,要使用WinHelp函数,必须在代码窗口的最前面声明,
Private Declare Function WinHelp Lib "user32" Alias "WinHelpA" (ByVal hwnd As Long, ByVal lpHelpFile As String, ByVal wCommand As Long, ByVal dwData As Long) As Long


MFC的一个对话框中怎样设置背景为一个图片

在MFC中给对话框中设置背景图片,方法有多种,这里整理了三种,具体操作如下:


方法一:
1、声明成员变量CBrush m_brush;
2、在InitDialog中添加代码:
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1); //这个IDB_BITMAP1要自己添加
m_brush.CreatePatternBrush(&bmp);
3、重载对话框的OnCtlColor,改最后的返回值:
return (HBRUSH)m_brush;

方法二:
把下面这段代码加进OnPaint()里就行了
CPaintDC dc(this);
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1); //这个IDB_BITMAP1要自己添加
CBrush brush;
brush.CreatePatternBrush(&bitmap);
CBrush* pOldBrush = dc.SelectObject(&brush);
dc.Rectangle(0,0,200,200); // 这些参数可以调整图片添加位置和大小
dc.SelectObject(pOldBrush);

方法三:使用StretchBlt()函数,具有图像自适应窗体功能
CPaintDC dc(this);
CBitmap m_bmpBK;
m_bmpBK.LoadBitmap(IDB_BITMAP1);
CRect rect;
GetClientRect(&rect);//获得目标尺寸,即窗口客户区的坐标
BITMAP bitMap;//位图结构体
m_bmpBK.GetBitmap(&bitMap);//获得原图片尺寸
CDC dcMem; //目标DC
dcMem.CreateCompatibleDC(&dc); //创建与dc兼容的内存DC
dcMem.SelectObject(&m_bmpBK);//将位图对象m_bmpBK选入内存DC
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);


ps里去掉白色背景后的图片 插入到flash中还是有背景白色的 怎么办

ps里去掉白色背景后图片要保存为png格式,且是透明背景。然后再导入flash中就不会有背景了。操作步骤如下:1.打开要处理的图片,如下:2.双击图层中的背景3.去背景图片,这里背景是纯白色比较好处理,用魔棒工具就可以了。其他复杂背景图片就要用抠图工具了4.保存为png格式5.导入flash中,效果如下,没有白色背景了

VB中如何实现将两幅BMP图合并为一张BMP图

假定两幅bmp图的大小都是288*206,合并后的图片大小为288*412(即两幅图上下排列):

Private Sub Command1_Click()
With Picture1
.Width = 288
.Height = 412
.PaintPicture LoadPicture("e:\1.bmp"), 0, 0
.PaintPicture LoadPicture("e:\2.bmp"), 0, 206 * Screen.TwipsPerPixelY
SavePicture .Image, "e:\3.bmp"
End With
End Sub

Private Sub Form_Load()
Me.ScaleMode = 3
Picture1.AutoRedraw = True
End Sub


VB 图像拼合

这是缩小1.5倍的代码,已经调试成功,你可以试一下:
Picture1.Height = Image1.Height / 1.5
Picture1.Width = Image1.Width / 1.5
Picture1.AutoSize = True
Image1.Stretch = True
Image1.Width = Image1.Width
Image1.Height = Image1.Height
Picture1.Refresh
Picture1.AutoRedraw = True
Picture1.PaintPicture Image1.Picture, 0, 0, Image1.Width / 1.5, Image1.Height / 1.5
Picture1.Picture = Picture1.Image


怎样把VB里面的PictureBox控件的背景设置成透明?

  如果是直接在窗体上显示的背景图(即设置form1.BackgroundImage属性来显示),那只须设置Label1.BackColor=Color.Transparent即可;
  如果是使用一个PictureBox来显示背景图,则需要在运行时将Label控件动态加载到PictureBox中去,使PictureBox成为Label的容器(这一点在设计时做不到,因为PictureBox不是一容器控件),再将Label的BackColor设置为Color.Transparent即可:
  dim lbl as new Label
  lbl.backcolor=color.Transparent
  lbl.text="China"
  PictureBox1.Controls.Add (lbl)
  这样一来就OK了。


上一篇:订单来了

下一篇:叉车限速器