vb点虐 使用矢量图的简单介绍

怎样用VB把一张图片透明的放到Picture里,在线等

Public Function TranBlt(DestHdc As Long, X As Long, Y As Long, W As Long, H As Long, srcHdcOrBmp As Long, Optional srcX As Integer, Optional srcY As Integer, Optional srcW As Long, Optional srcH As Long, Optional tc As Long = -1, Optional IsBmp As Boolean) As Long

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、虚拟空间、营销软件、网站建设、长岛网站维护、网站推广。

'srcHdcOrBmp参数 传入的可以是hdc也可以是Bmp对象的Handle,

'IsBmp参数 为真时srcHdcOrBmp代表Bmp对象的Handle,为假时代表hdc

'返回值 成功时返回透明色,不成功时返回-1

Dim tHdc(3) As MemHdc

Dim J As Long, oc As Long, I As Long, Bm As BITMAP, cc As Long, NewDc As Long

Dim sw As Long, sh As Long, sBmp As Long, sHdc As Long, obm As Long, NewX As Long, NewY As Long

If DestHdc = 0 Or srcHdcOrBmp = 0 Or W = 1 And H = 1 Then GoTo fail

If IsBmp Then '若传入的是Bmp句柄,需为其创建一个临时DC

sBmp = srcHdcOrBmp

tHdc(3) = NewMyHdc(DestHdc, 0, 0, srcHdcOrBmp)

sHdc = tHdc(3).hdc

Else

sHdc = srcHdcOrBmp

If srcW = 0 Then sBmp = GetCurrentObject(sHdc, 7)

End If

If sHdc = 0 Or sBmp = 0 Then GoTo fail

If srcW = 0 Then '若没有提供源图大小,需取得整个源图大小

GetObj sBmp, Len(Bm), Bm

sw = Bm.bmWidth - srcX

sh = Bm.bmHeight - srcY

Else

sw = srcW

sh = srcH

End If

If sw 1 Or sh 1 Then GoTo fail

If tc = -1 Then

cc = GetPixel(sHdc, srcX, srcY) '将左上角第一个像素作为源图背景色,用于透明

Else

cc = tc

End If

If W sw Or H sh Then

tHdc(2) = NewMyHdc(DestHdc, W, H)

StretchBlt tHdc(2).hdc, 0, 0, W, H, sHdc, srcX, srcY, sw, sh, vbSrcCopy

'先将源图缩放,下面步骤就一样了。

NewDc = tHdc(2).hdc

Else

NewDc = sHdc

NewX = srcX

NewY = srcY

End If

BitBlt DestHdc, X, Y, W, H, NewDc, NewX, NewY, vbSrcInvert

'将源图先反色(XOR)绘入目标图,若源图背景为黑色,此步可省

'下面是制作Mask图的方法

I = CreateBitmap(W, H, 1, 1, ByVal 0) '建立单色位图

tHdc(0) = NewMyHdc(DestHdc, 0, 0, I) '为单色图建立新DC,并选入

tHdc(1) = NewMyHdc(DestHdc, W, H) '另建一个彩色图及DC,用于存放Mask图

oc = SetBkColor(NewDc, cc) '将源图背景色改为透明色

BitBlt tHdc(0).hdc, 0, 0, W, H, NewDc, NewX, NewY, vbSrcCopy

'先将源图绘入单色DC,由此产生只有正反的Mask图,背景色(透明色)为黑,其它为白

SetBkColor NewDc, oc '恢复源图背景色,不是必须的,但这是个好习惯。

BitBlt tHdc(1).hdc, 0, 0, W, H, tHdc(0).hdc, 0, 0, vbSrcCopy

'单色DC必须复制进彩色DC才能进行后面的的AND运算

'Mask图完成,并已放入彩色DC

BitBlt DestHdc, X, Y, W, H, tHdc(1).hdc, 0, 0, vbSrcAnd '标准透明绘图:选将Mask图用And运算绘入,

BitBlt DestHdc, X, Y, W, H, NewDc, NewX, NewY, vbSrcInvert '再将源图以反色(XOR)绘入一次

DelMyHdc tHdc(0)

DelMyHdc tHdc(1)

If tHdc(2).hdc 0 Then DelMyHdc tHdc(2)

If tHdc(3).hdc 0 Then DelMyHdc tHdc(3)

TranBlt = cc

Exit Function

fail:

If tHdc(3).hdc 0 Then DelMyHdc tHdc(3)

TranBlt = -1

End Function

Private Function NewMyHdc(dHdc As Long, W As Long, H As Long, Optional Bm As Long) As MemHdc

With NewMyHdc

.hdc = CreateCompatibleDC(dHdc)

If Bm = 0 Then

.Bmp = CreateCompatibleBitmap(dHdc, W, H)

Else

.Bmp = Bm

End If

.obm = SelectObject(.hdc, .Bmp)

End With

End Function

Private Function DelMyHdc(MyHdc As MemHdc, Optional nobmp As Boolean) As MemHdc

With MyHdc

If .hdc 0 And .obm 0 Then SelectObject .hdc, .obm

If nobmp = False And .Bmp 0 Then DeleteObject .Bmp

If .hdc 0 Then DeleteDC .hdc

End With

End Function

把这个函数放在一个BAS里,然后在窗体里

TranBlt pic.hdc, X,Y,W,H,PIC2.Picture.Handle, _

TX,TY,TW,TH, , True

就OK

矢量图上那些大小不变的图标VB.NET怎样能实现

矢量图是指大小变化,但是不出现锯齿状的失真,通常是用其他图形设计软件,比如coreldraw输出图片,拿出来使用,直接用vbnet不能实现吧

vb点虐 中,如何像下图一样,用很简单的办法,导入1000张图片。

很简单的方法,貌似没有。这个需要自己写很多代码:

用一个ListView控件。

判断滚动条当前所显示的图片集合,获取它们的物理路径。

用Bitmap.FromImage方法把这些图片读出来,

然后获取缩略图,

把缩略图用Graphics.DrawImage()绘制出来。

我可以提供Bitmap如何获取缩略图的方法:

''' summary必须创建一个委托并将对此委托的引用作为获取缩略图 callback 参数传递,但不使用此委托。/summary

Public Function ThumbnailCallback() As Boolean

Return False

End Function

''' summary返回Image,表示图像指定 宽 和 高 的缩略图。/summary

Public Function 获取缩略图(位图 As Bitmap, 宽 As Integer, 高 As Integer) As Image

Dim myCallback As New Image.GetThumbnailImageAbort(ThumbnailCallback)

Return 位图.GetThumbnailImage(宽, 高, myCallback, IntPtr.Zero)

End Function

vbnet打开文件夹下打开jpg和png

XPS文件格式经常在文件处理应用程序中使用。您可以在基于.NET Framework的应用程序中使用C#或VB.NET以编程方式将XPS或OXPS转换为JPG或PNG图像。

让我们逐步介绍以下方案,以了解有关XPS转换的更多信息:

使用C#或VB.NET将XPS,OXPS转换为JPG图像

使用C#或VB.NET将XPS,OXPS转换为PNG图像

目前,.NET版Aspose.page升级到v20.10版,感兴趣的朋友可点击下载

使用C#或VB.NET将XPS,OXPS转换为JPG图像

JPG文件之所以出名是因为它们在所有系统环境中均受支持。您可以使用C#或VB.NET以编程方式将XPS或OXPS文件转换为JPG图像。对于XPS或OXPS到JPG图像的转换,应遵循以下步骤:

加载输入XPS或OXPS文件

初始化JpegSaveOptions对象

指定要渲染的SmoothingMode,Resolution和PageNumbers

保存输出的JPG图像

以下代码显示了如何使用C#语言将XPS或OXPS转换为JPG图像:

// Input file

string inputFileName = dataDir + "input.xps";

//Output file

string outputFileName = dataDir + "XPStoImage_out.jpeg";

// Initialize XPS input stream

using (Stream xpsStream = File.Open(inputFileName, FileMode.Open, FileAccess.Read))

{

// Load XPS document form the stream

XpsDocument document = new XpsDocument(xpsStream, new XpsLoadOptions());

// or load XPS document directly from file. No xpsStream is needed then.

// XpsDocument document = new XpsDocument(inputFileName, new XpsLoadOptions());

// Initialize options object with necessary parameters.

JpegSaveOptions options = new JpegSaveOptions()

{

SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality,

Resolution = 300

};

// Create rendering device for JPG format

ImageDevice device = new ImageDevice();

document.Save(device, options);

// Iterate through document partitions (fixed documents, in XPS terms)

for (int i = 0; i device.Result.Length; i++) // Iterate through partition pages for (int j = 0; j device.Result[i].Length; j++) { // Initialize image output stream using (Stream imageStream = System.IO.File.Open(Path.GetDirectoryName(outputFileName) + Path.GetFileNameWithoutExtension(outputFileName) + "_" + (i + 1) + "_" + (j + 1) + Path.GetExtension(outputFileName), System.IO.FileMode.Create, System.IO.FileAccess.Write)) // Write image imageStream.Write(device.Result[i][j], 0, device.Result[i][j].Length); } }

使用C#或VB.NET将XPS,OXPS转换为PNG图像

可能需要使用C#或VB.NET和Aspose.Page for .NET API将XPS或OXPS文件转换为PNG。您需要按照以下步骤将XPS转换为PNG:

加载输入XPS或OXPS文件

初始化PngSaveOptions对象

设置图像分辨率或页面编号为渲染

保存输出的PNG图像


新闻名称:vb点虐 使用矢量图的简单介绍
本文地址:http://scyanting.com/article/ddesehg.html