VB显示NPG格式的图片

在左侧工具栏右键打开部件,加载"Microsoft Common Dialog Control 6.0(SP6)",将其画到窗体上,默认名称为"CommonDialog1",再画一个Picture1和一个Command1,加入以下代码:
Option Explicit
Private Declare Function GdiplusStartup Lib “gdiplus” (Token As Long, inputbuf As GdiplusStartupInput, Optional ByVal outputbuf As Long = 0) As Long
Private Declare Sub GdiplusShutdown Lib “gdiplus” (ByVal Token As Long)
Private Declare Function GdipLoadImageFromFile Lib “gdiplus” (ByVal FileName As Long, hImage As Long) As Long
Private Declare Function GdipDisposeImage Lib “gdiplus” (ByVal Image As Long) As Long
Private Declare Function GdipCreateFromHDC Lib “gdiplus” (ByVal hdc As Long, Graphics As Long) As Long
Private Declare Function GdipDeleteGraphics Lib “gdiplus” (ByVal Graphics As Long) As Long
Private Declare Function GdipDrawImageRectRectI Lib “gdiplus” (ByVal Graphics As Long, ByVal hImage As Long, ByVal dstX As Long, ByVal dstY As Long, ByVal dstWidth As Long, ByVal dstHeight As Long, ByVal SrcX As Long, ByVal SrcY As Long, ByVal SrcWidth As Long, ByVal SrcHeight As Long, ByVal srcUnit As Long, Optional ByVal imageAttributes As Long = 0, Optional ByVal callback As Long = 0, Optional ByVal callbackData As Long = 0) As Long
Private Declare Function GdipGetImageWidth Lib “gdiplus” (ByVal Image As Long, Width As Long) As Long
Private Declare Function GdipGetImageHeight Lib “gdiplus” (ByVal Image As Long, Height As Long) As Long
Const UnitPixel As Long = &H2&
Private Type GdiplusStartupInput
GdiplusVersion As Long
DebugEventCallback As Long
SuppressBackgroundThread As Long
SuppressExternalCodecs As Long
End Type

Private Function LoagPNG(ByVal PNGurl As String, ByVal Controls As Object) 'PNG图片路径,图片控件
Controls.AutoRedraw = True
Dim Image As Long
Dim Graphics As Long
Dim Token As Long
Dim GdipInput As GdiplusStartupInput
GdipInput.GdiplusVersion = 1
GdiplusStartup Token, GdipInput
GdipLoadImageFromFile StrPtr(PNGurl), Image
GdipGetImageWidth Image, Controls.Width
GdipGetImageHeight Image, Controls.Height
GdipCreateFromHDC Controls.hdc, Graphics
GdipDrawImageRectRectI Graphics, Image, 0, 0, Controls.Width, Controls.Height, 0, 0, Controls.Width, Controls.Height, UnitPixel, 0, 0, 0 '显示位置
GdipDeleteGraphics Graphics
GdipDisposeImage Image
Controls.Refresh
Controls.Picture = Controls.Image
GdiplusShutdown Token
End Function

Private Sub Command1_Click()
CommonDialog1.Filter = “JPG|.jpg|BMP|.bmp|GIF|.gif|NPG|.png”
CommonDialog1.ShowOpen
If CommonDialog1.FileName <> “” Then
Me.Picture = LoadPicture("")
Call LoagPNG(CommonDialog1.FileName, Picture1)
End If
End Sub

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: matlab中的npg函数是一个基于模拟退火算法的全局优化函数。它被用来寻找给定约束条件下的最小值或最大值。 npg函数的使用格式为: x = npg(fun,x0,A,b,Aeq,beq,lb,ub,options) 其中,fun是用户定义的目标函数;x0是初始猜测解;A和b定义了线性不等式约束条件;Aeq和beq定义了线性等式约束条件;lb和ub定义了变量的上下界;options是一个结构体,包含了算法的相关参数设置。 npg函数首先使用模拟退火算法进行优化,然后使用局部搜索算法来细化结果。这个函数使用了随机性来探索解空间,并以一定概率接受劣解,从而避免陷入局部最优解。 在调用npg函数时,我们需要根据具体的问题设置好目标函数和约束条件。目标函数应是连续可导的,并且返回一个标量值。约束条件可以包括线性不等式约束、线性等式约束、变量的上下界等。我们还可以通过调整参数options来控制算法的收敛速度和结果的准确性。 总之,npg函数是matlab中的一个全局优化函数,它基于模拟退火算法来寻找给定约束条件下的最小值或最大值。通过合理设置目标函数和约束条件,并调整算法的参数,我们可以得到较好的优化结果。 ### 回答2: npg函数在MATLAB中是一个用于计算NPG(Normalized Power Gained)的函数。NPG是一种用于评估机械系统动力学特性的指标。它与系统的阻尼特性有关,可以用于评估系统的稳定性和性能。 在MATLAB中,使用npg函数可以计算给定系统的NPG值。该函数需要提供系统的传递函数作为输入参数。传递函数是描述输入和输出之间关系的数学模型。通过传递函数,可以确定系统的动态特性,如频率响应和阻尼比。 npg函数根据传递函数计算系统的固有频率和阻尼比,并使用这些值来计算NPG值。NPG值越大,表示系统在运行过程中获得的能量越高,系统更加稳定。 使用npg函数可以帮助工程师和研究人员评估系统的动力学特性,并根据需要进行调整和优化。该函数在MATLAB中提供了一种方便的方式来计算和分析系统的NPG值。 ### 回答3: matlab中的npg函数是用来计算矩阵中每个元素的非负公差的函数。NPG是Non-negative Partial Gradient的缩写,意为非负部分梯度。在计算机科学和数学领域,梯度是指一个函数的变化率或斜率。在图像处理和优化问题中,梯度可以帮助我们确定最佳的方向和步长。然而,在某些情况下,我们希望限制梯度的取值范围在非负数之间,以保持数据的特定性质和约束。这种情况下,就可以使用matlab中的npg函数。 npg函数的输入参数为一个矩阵,输出为一个与输入矩阵相同大小的矩阵,其中每个元素的值为相应元素的非负梯度值。具体来说,对于输入矩阵中的每个元素,npg函数会计算其梯度值,并将其限制在非负范围内。如果原始元素大于零,则输出元素与原始元素相同;如果原始元素小于零,则输出元素为零。因此,npg函数可以帮助我们处理那些需要梯度的问题,但又需要限制梯度的正负性的情况。 使用npg函数的示例代码如下: ```matlab A = [-1 2 -3; 4 -5 6; -7 8 -9]; % 输入矩阵 B = npg(A); % 计算矩阵A的非负梯度 disp(B); % 输出非负梯度矩阵 ``` 以上示例代码中,输入矩阵A包含了正负数,通过调用npg函数得到的矩阵B则只包含非负数。可以看到,输出矩阵中负数元素都被替换为零,而正数元素与输入矩阵中相同。 总之,matlab中的npg函数提供了一种计算矩阵非负梯度的方法,它能够帮助处理那些需要限制梯度正负性的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

键盘上的舞指

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值