189 8069 5689

vb点虐 特效 vbnet tabcontrol

vb点虐 怎么使图像灰度化再输出

在web上可以使用HTML5的特效实现。

成都创新互联是一家企业级云计算解决方案提供商,超15年IDC数据中心运营经验。主营GPU显卡服务器,站群服务器,四川联通机房服务器托管,海外高防服务器,机柜大带宽,动态拨号VPS,海外云手机,海外云服务器,海外服务器租用托管等。

在windows forms里面可以直接修改设置图片的属性。

Try

' 图片位置初始化一个image1

Dim image1 As New Bitmap(

"C:\Documents and Settings\All Users\Documents\My Music\music.bmp",

True)

Dim x, y As Integer

' Loop through the images pixels to reset color.

For x = 0 To image1.Width - 1

For y = 0 To image1.Height - 1

Dim pixelColor As Color = image1.GetPixel(x, y)

Dim newColor As Color =

Color.FromArgb(pixelColor.R, 0, 0)

image1.SetPixel(x, y, newColor)

Next

Next

' Set the PictureBox to display the image.

PictureBox1.Image = image1

' Display the pixel format in Label1.

Label1.Text = "Pixel format: " + image1.PixelFormat.ToString()

Catch ex As ArgumentException

MessageBox.Show("There was an error." _

"Check the path to the image file.")

End Try

求一个能实现屏幕水波纹效果的vb代码

'补模块3文件。一个放不下。

'

' 渲染子程序,将新的帧数据渲染到 lpDIBitsRender 中

' 算法:

' posx = Wave1(x-1,y)-Wave1(x+1,y)+x

' posy = Wave1(x,y-1)-Wave1(x,y+1)+y

' SourceBmp(x,y) = DestBmp(posx,posy)

'

Public Sub WaveRender(lpWaveObject As WAVE_OBJECT)

Dim dwPosX As Long, dwPosY As Long, dwPtrSource As Long, dwPtrDest As Long, dwFlag As Long

Dim lpWave1 As Long, LineIdx As Long, LinePtr As Long

Dim lpDIBitsSource As Long, lpDIBitsRender As Long

Dim I As Long, J As Long

dwFlag = 0

With lpWaveObject

'Debug.Print "WaveRender " .dwFlag

If (.dwFlag And F_WO_ACTIVE) = 0 Then Exit Sub

.dwFlag = .dwFlag Or F_WO_NEED_UPDATE

lpWave1 = .lpWave1

LineIdx = .dwWaveByteWidth '像素指针

For I = 1 To .dwBmpHeight - 2

For J = 0 To .dwBmpWidth - 1

'********************************************************************

' PosY=i+像素上1能量-像素下1能量

' PosX=j+像素左1能量-像素右1能量

'********************************************************************

'LineIdx = LineIdx - .dwWaveByteWidth

LinePtr = lpWave1 + LineIdx - .dwWaveByteWidth

pLongPtr(0) = LinePtr

dwPosY = pLong(0)

LinePtr = lpWave1 + LineIdx + .dwWaveByteWidth

pLongPtr(0) = LinePtr

dwPosY = dwPosY - pLong(0) + I

LinePtr = lpWave1 + LineIdx - 4

pLongPtr(0) = LinePtr

dwPosX = pLong(0)

LinePtr = lpWave1 + LineIdx + 4

pLongPtr(0) = LinePtr

dwPosX = dwPosX - pLong(0) + J

If dwPosX 0 Or dwPosY 0 Then GoTo Continue

If dwPosX = .dwBmpWidth Or dwPosY = .dwBmpHeight Then GoTo Continue

'********************************************************************

' ptrSource = dwPosY * dwDIByteWidth + dwPosX * 3

' ptrDest = i * dwDIByteWidth + j * 3

'********************************************************************

'dwPtrSource = dwPosY * .dwDIByteWidth + (dwPosX + dwPosX * 2)

dwPosX = dwPosX + dwPosX * 2 'dwPosX * 3

dwPtrSource = dwPosY * .dwDIByteWidth + dwPosX

dwPtrDest = I * .dwDIByteWidth + (J + J * 2) 'dwPtrDest = I * .dwDIByteWidth + J * 3

'********************************************************************

' 渲染像素 [ptrDest] = 原始像素 [ptrSource]

'********************************************************************

lpDIBitsSource = .lpDIBitsSource + dwPtrSource

lpDIBitsRender = .lpDIBitsRender + dwPtrDest

If dwPtrSource dwPtrDest Then

dwFlag = dwFlag Or 1 '如果存在源像素和目标像素不同,则表示还在活动状态

' Debug.Print dwPtrSource " SR " dwPtrDest

'CopyMemory ByVal lpDIBitsRender, ByVal lpDIBitsSource, 3

Call WaveGetPixel(lpDIBitsSource, lpDIBitsRender, .dwDIByteWidth)

Else

CopyMemory ByVal lpDIBitsRender, ByVal lpDIBitsSource, 3

End If

'********************************************************************

' 继续循环

'********************************************************************

Continue:

LineIdx = LineIdx + 4 '像素++ '指针4个字节

Next 'J

Next 'I

SetDIBits .hDcRender, .hBmpRender, 0, .dwBmpHeight, .lpDIBitsRender, .stBmpInfo, DIB_RGB_COLORS

If dwFlag = 0 Then .dwFlag = .dwFlag And (Not F_WO_ACTIVE)

'Debug.Print "WaveRender " .dwFlag

End With

End Sub

Public Sub WaveUpdateFrame(lpWaveObject As WAVE_OBJECT, ByVal hdc As Long, bIfForce As Boolean)

'Dim ret As Long

With lpWaveObject

If bIfForce = True Then GoTo labUpdate

If (.dwFlag And F_WO_NEED_UPDATE) Then

'ret = SetDIBitsToDevice(.hDcRender, 0, 0, .dwBmpWidth, .dwBmpHeight, 0, 0, 0, .dwBmpHeight, .lpDIBitsRender, .stBmpInfo, DIB_RGB_COLORS)

'ret = SetDIBits(.hDcRender, .hBmpRender, 0, .dwBmpHeight, .lpDIBitsRender, .stBmpInfo, DIB_RGB_COLORS)

'SetDIBits .hDcRender, .hBmpRender, 0, .dwBmpHeight, .lpDIBitsRender, .stBmpInfo, DIB_RGB_COLORS

labUpdate:

BitBlt hdc, 0, 0, .dwBmpWidth, .dwBmpHeight, .hDcRender, 0, 0, SRCCOPY

.dwFlag = .dwFlag And (Not F_WO_NEED_UPDATE)

End If

End With

End Sub

'

' 扔一块石头

'

Public Sub WaveDropStone(lpWaveObject As WAVE_OBJECT, ByVal dwPosX As Long, ByVal dwPosY As Long, ByVal dwStoneSize As Long, ByVal dwStoneWeight As Long)

Dim dwSize As Long

Dim dwX1 As Long, dwX2 As Long

Dim dwY1 As Long, dwY2 As Long, dwY3 As Long

'Dim dwMaxX As Long, dwMaxY As Long

Dim LinePtr As Long

With lpWaveObject

'Debug.Print "WaveDropStone " .dwFlag

'********************************************************************

' 计算范围

'********************************************************************

dwSize = dwStoneSize \ H2 '2 ^ 1

dwX1 = dwPosX + dwSize

dwX2 = dwPosX - dwSize

If (.dwFlag And F_WO_ELLIPSE) Then dwSize = dwSize \ H2 ' 2 ^ 1

dwY1 = dwPosY + dwSize

dwY2 = dwPosY - dwSize

dwSize = dwStoneSize

If dwSize = 0 Then dwSize = dwSize + 1

'********************************************************************

' 判断范围的合法性

'********************************************************************

If dwX1 + 1 = .dwBmpWidth Or dwX2 1 Or dwY1 + 1 = .dwBmpHeight Or dwY2 1 Then Exit Sub

'********************************************************************

' 将范围内的点的能量置为 dwStoneWeight

'********************************************************************

While dwX2 = dwX1

dwY3 = dwY2

While dwY3 = dwY1

'(x-x0)^2+(y-y0)^2=r^2 就在圆内

If (dwX2 - dwPosX) * (dwX2 - dwPosX) + (dwY3 - dwPosY) * (dwY3 - dwPosY) = dwSize * dwSize Then

LinePtr = .lpWave1 + (dwY3 * .dwBmpWidth + dwX2) * H4 '2 ^ 2

pLongPtr(0) = LinePtr

pLong(0) = dwStoneWeight

End If

dwY3 = dwY3 + 1

Wend

dwX2 = dwX2 + 1

Wend

.dwFlag = .dwFlag Or F_WO_ACTIVE

End With

End Sub

'

' 计算扩散数据、渲染位图、更新窗口、处理特效的定时器过程

'

Public Sub WaveTimerProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long)

Dim hdc As Long

Dim dwPosX As Long, dwPosY As Long, dwSize As Long, dwWeight As Long

Dim lpWaveObj As Long

'建立模拟指针

Dim pWAVE_OBJECT() As WAVE_OBJECT

Dim pWAVE_OBJECTPtr() As Long

Dim SApWAVE_OBJECT As SAFEARRAY1D

Dim SApWAVE_OBJECTPtr As SAFEARRAY1D

With SApWAVE_OBJECT

.cDims = 1

.fFeatures = 0

.cbElements = 1

.cLocks = 0

.pvData = 0

.Bounds(0).lLbound = 0

.Bounds(0).cElements = 1

End With

With SApWAVE_OBJECTPtr

.cDims = 1

.fFeatures = 0

.cbElements = 4

.cLocks = 0

.pvData = VarPtr(SApWAVE_OBJECT.pvData)

.Bounds(0).lLbound = 0

.Bounds(0).cElements = 1

End With

CopyMemory ByVal VarPtrArray(pWAVE_OBJECT), VarPtr(SApWAVE_OBJECT), 4

CopyMemory ByVal VarPtrArray(pWAVE_OBJECTPtr), VarPtr(SApWAVE_OBJECTPtr), 4

lpWaveObj = idEvent

pWAVE_OBJECTPtr(0) = lpWaveObj

'Debug.Print "WaveTimerProc " pWAVE_OBJECT(0).dwFlag

Call WaveSpread(pWAVE_OBJECT(0))

Call WaveRender(pWAVE_OBJECT(0))

With pWAVE_OBJECT(0)

If (.dwFlag And F_WO_NEED_UPDATE) Then

hdc = GetDC(.hWnd)

Call WaveUpdateFrame(pWAVE_OBJECT(0), hdc, False)

Call ReleaseDC(.hWnd, hdc)

End If

'********************************************************************

' 特效处理

'********************************************************************

If (.dwFlag And F_WO_EFFECT) = 0 Then Exit Sub

Select Case .dwEffectType

'********************************************************************

' Type = 1 雨点,Param1=速度(0最快,越大越慢),Param2=雨点大小,Param3=能量

'********************************************************************

Case 1

'Dim ret As Long

If .dwEffectParam1 0 Then Call WaveRandom(pWAVE_OBJECT(0), .dwEffectParam1) 'ret = WaveRandom(pWAVE_OBJECT(0), .dwEffectParam1)

'If ret = 0 Then

dwPosX = WaveRandom(pWAVE_OBJECT(0), .dwBmpWidth - 2) + 1

dwPosY = WaveRandom(pWAVE_OBJECT(0), .dwBmpHeight - 2) + 1

dwSize = WaveRandom(pWAVE_OBJECT(0), .dwEffectParam2) + 1

dwWeight = WaveRandom(pWAVE_OBJECT(0), .dwEffectParam3) + 50

Call WaveDropStone(pWAVE_OBJECT(0), dwPosX, dwPosY, dwSize, dwWeight)

'End If

'********************************************************************

' Type = 2 行船,Param1=速度(0最快,越大越快),Param2=大小,Param3=能量

'********************************************************************

Case 2

.dwEff2Flip = .dwEff2Flip + 1

If (.dwEff2Flip And 1) 0 Then Exit Sub

dwPosX = .dwEff2X + .dwEff2XAdd

dwPosY = .dwEff2Y + .dwEff2YAdd

If dwPosX 1 Then

dwPosX = -(dwPosX - 1)

.dwEff2XAdd = -.dwEff2XAdd

End If

If dwPosY 1 Then

dwPosY = -(dwPosY - 1)

.dwEff2YAdd = -.dwEff2YAdd

End If

If dwPosX .dwBmpWidth - 1 Then

dwPosX = (.dwBmpWidth - 1) - (dwPosX - (.dwBmpWidth - 1)) '(.dwBmpWidth - 1)*2 -dwPosX

.dwEff2XAdd = -.dwEff2XAdd

End If

If dwPosY .dwBmpHeight - 1 Then

dwPosY = (.dwBmpHeight - 1) - (dwPosY - (.dwBmpHeight - 1)) '(.dwBmpHeight-1)*2-dwPosY

.dwEff2YAdd = -.dwEff2YAdd

End If

.dwEff2X = dwPosX

.dwEff2Y = dwPosY

Call WaveDropStone(pWAVE_OBJECT(0), dwPosX, dwPosY, .dwEffectParam2, .dwEffectParam3)

'********************************************************************

' Type = 3 波浪,Param1=密度,Param2=大小,Param3=能量

'********************************************************************

Case 3

Dim I As Long

For I = 0 To .dwEffectParam1

dwPosX = WaveRandom(pWAVE_OBJECT(0), .dwBmpWidth - 2) + 1

dwPosY = WaveRandom(pWAVE_OBJECT(0), .dwBmpHeight - 2) + 1

dwSize = WaveRandom(pWAVE_OBJECT(0), .dwEffectParam2) + 1

dwWeight = WaveRandom(pWAVE_OBJECT(0), .dwEffectParam3)

Call WaveDropStone(pWAVE_OBJECT(0), dwPosX, dwPosY, dwSize, dwWeight)

Next

End Select

End With

'取消模拟指针

CopyMemory ByVal VarPtrArray(pWAVE_OBJECT), 0, 4

CopyMemory ByVal VarPtrArray(pWAVE_OBJECTPtr), 0, 4

End Sub

'

'释放对象

'

Public Sub WaveFree(lpWaveObject As WAVE_OBJECT)

With lpWaveObject

If .hDcRender 0 Then DeleteDC (.hDcRender)

If .hBmpRender 0 Then DeleteObject .hBmpRender

If .lpDIBitsSource 0 Then GlobalFree .lpDIBitsSource

If .lpDIBitsRender 0 Then GlobalFree .lpDIBitsRender

If .lpWave1 0 Then GlobalFree .lpWave1

If .lpWave2 0 Then GlobalFree .lpWave2

KillTimer .hWnd, VarPtr(lpWaveObject)

ZeroMemory ByVal VarPtr(lpWaveObject), Len(lpWaveObject)

'-----------------------------------------------------------

'取消模拟指针

CopyMemory ByVal VarPtrArray(pLong), 0, 4

CopyMemory ByVal VarPtrArray(pLongPtr), 0, 4

'-----------------------------------------------------------------

'取消模拟指针

CopyMemory ByVal VarPtrArray(pByte), 0, 4

CopyMemory ByVal VarPtrArray(pBytePtr), 0, 4

'-----------------------------------------------------------

End With

End Sub

'

' 初始化对象

' 参数:_lpWaveObject = 指向 WAVE_OBJECT结构体

' 返回:0 成功、 1 失败

'

Public Function WaveInit(lpWaveObject As WAVE_OBJECT, ByVal hWnd As Long, ByVal hBmp As Long, ByVal dwSpeed As Long, ByVal dwType As WaveType) As Long

Dim stBmp As BITMAP

Dim dwReturn As Long

Dim ret As Long

Dim hdc As Long

Dim hMDC As Long

'-----------------------------------------------------------------

'建立模拟指针

With SApLong

.cDims = 1

.fFeatures = 0

.cbElements = 1

.cLocks = 0

.pvData = 0

.Bounds(0).lLbound = 0

.Bounds(0).cElements = 1

End With

With SApLongPtr

.cDims = 1

.fFeatures = 0

.cbElements = 4

.cLocks = 0

.pvData = VarPtr(SApLong.pvData)

.Bounds(0).lLbound = 0

.Bounds(0).cElements = 1

End With

CopyMemory ByVal VarPtrArray(pLong), VarPtr(SApLong), 4

CopyMemory ByVal VarPtrArray(pLongPtr), VarPtr(SApLongPtr), 4

'-----------------------------------------------------------------

'建立模拟指针

With SApByte

.cDims = 1

.fFeatures = 0

.cbElements = 1

.cLocks = 0

.pvData = 0

.Bounds(0).lLbound = 0

.Bounds(0).cElements = 3

End With

With SApBytePtr

.cDims = 1

.fFeatures = 0

.cbElements = 4

.cLocks = 0

.pvData = VarPtr(SApByte.pvData)

.Bounds(0).lLbound = 0

.Bounds(0).cElements = 1

End With

CopyMemory ByVal VarPtrArray(pByte), VarPtr(SApByte), 4

CopyMemory ByVal VarPtrArray(pBytePtr), VarPtr(SApBytePtr), 4

'-----------------------------------------------------------------

dwReturn = 0

ZeroMemory ByVal VarPtr(lpWaveObject), Len(lpWaveObject)

'ZeroMemory lpWaveObject, H84 ' Len(WAVE_OBJECT)

With lpWaveObject

If dwType = sEllipse Then

.dwFlag = .dwFlag Or F_WO_ELLIPSE

End If

'********************************************************************

' 获取位图尺寸

'********************************************************************

.hWnd = hWnd

.dwRandom = GetTickCount()

ret = GetObject(hBmp, Len(stBmp), stBmp)

If ret = 0 Then

dwReturn = 1

GoTo result

End If

.dwBmpHeight = stBmp.bmHeight

'if lpWaveObject.dwBmpHeight 3 then dwReturn = 1:GoTo result

.dwBmpWidth = stBmp.bmWidth

'if lpWaveObject.dwBmpWidth 3 then dwReturn = 1:GoTo result

.dwWaveByteWidth = stBmp.bmWidth * H4 '2 ^ 2 'dwBmpWidth * 4

.dwDIByteWidth = (stBmp.bmWidth + stBmp.bmWidth * 2 + 3) And (Not H3) '(dwBmpWidth * 3 + 3) and ~3 ' ((W * 3 + 3) And (Not 3))

'********************************************************************

' 创建用于渲染的位图

'********************************************************************

hdc = GetDC(hWnd)

.hDcRender = CreateCompatibleDC(hdc)

.hBmpRender = CreateCompatibleBitmap(hdc, .dwBmpWidth, .dwBmpHeight)

'MsgBox .hBmpRender

SelectObject .hDcRender, .hBmpRender

'********************************************************************

' 分配波能缓冲区

'********************************************************************

.lpWave1 = GlobalAlloc(GPTR, .dwWaveByteWidth * .dwBmpHeight)

.lpWave2 = GlobalAlloc(GPTR, .dwWaveByteWidth * .dwBmpHeight)

'********************************************************************

' 分配像素缓冲区

'********************************************************************

.lpDIBitsSource = GlobalAlloc(GPTR, .dwDIByteWidth * .dwBmpHeight)

.lpDIBitsRender = GlobalAlloc(GPTR, .dwDIByteWidth * .dwBmpHeight)

'********************************************************************

' 获取原始像素数据

'********************************************************************

'With .stBmpInfo.bmiHeader

.stBmpInfo.bmiHeader.biSize = Len(.stBmpInfo.bmiHeader) ' H28 'len(BITMAPINFOHEADER)

.stBmpInfo.bmiHeader.biWidth = .dwBmpWidth

.stBmpInfo.bmiHeader.biHeight = -.dwBmpHeight '- .dwBmpHeight

.stBmpInfo.bmiHeader.biPlanes = 1

.stBmpInfo.bmiHeader.biBitCount = 24

.stBmpInfo.bmiHeader.biCompression = BI_RGB

.stBmpInfo.bmiHeader.biSizeImage = 0

'End With

hMDC = CreateCompatibleDC(hdc)

SelectObject hMDC, hBmp

ReleaseDC hWnd, hdc

GetDIBits hMDC, hBmp, 0, .dwBmpHeight, .lpDIBitsSource, .stBmpInfo, DIB_RGB_COLORS

GetDIBits hMDC, hBmp, 0, .dwBmpHeight, .lpDIBitsRender, .stBmpInfo, DIB_RGB_COLORS

DeleteDC hMDC

If .lpWave1 = 0 Or .lpWave2 = 0 Or .lpDIBitsSource = 0 Or .lpDIBitsRender = 0 Or .hDcRender = 0 Then

WaveFree lpWaveObject

dwReturn = 1

End If

'Debug.Print "WaveInit " .dwFlag

SetTimer hWnd, ByVal VarPtr(lpWaveObject), dwSpeed, AddressOf WaveTimerProc

.dwFlag = .dwFlag Or F_WO_ACTIVE Or F_WO_NEED_UPDATE

'Debug.Print "WaveInit " .dwFlag

WaveRender lpWaveObject

hdc = GetDC(.hWnd)

WaveUpdateFrame lpWaveObject, hdc, True

ReleaseDC .hWnd, hdc

End With

'********************************************************************

result:

WaveInit = dwReturn

End Function

'

' 一些特效

' 输入:dwType = 0 关闭特效

' dwType 0 开启特效,参数具体见上面

'

Public Sub WaveEffect(lpWaveObject As WAVE_OBJECT, ByVal dwEffectType As WaveEffectType, ByVal dwParam1 As Long, ByVal dwParam2 As Long, ByVal dwParam3 As Long)

Dim dwMaxX As Long, dwMaxY As Long

With lpWaveObject

' Debug.Print "WaveEffect " .dwFlag

Select Case dwEffectType

Case wClose '关闭特效

.dwFlag = .dwFlag And (Not F_WO_EFFECT)

.dwEffectType = dwEffectType

Exit Sub

'Case wrain '下雨

Case wLaunch '汽艇

.dwEff2XAdd = dwParam1

.dwEff2YAdd = dwParam1

.dwEff2X = WaveRandom(lpWaveObject, .dwBmpWidth - 2) + 1

.dwEff2Y = WaveRandom(lpWaveObject, .dwBmpHeight - 2) + 1

' .dwEffectType = dwEffectType

' .dwEffectParam1 = dwParam1

' .dwEffectParam2 = dwParam2

' .dwEffectParam3 = dwParam3

' .dwFlag = .dwFlag Or F_WO_EFFECT

'Case wWaves '风浪

'Case Else '默认

End Select

.dwEffectType = dwEffectType

.dwEffectParam1 = dwParam1

.dwEffectParam2 = dwParam2

.dwEffectParam3 = dwParam3

.dwFlag = .dwFlag Or F_WO_EFFECT

End With

End Sub

C#或者VB.Net,怎么实现窗体的Aero毛玻璃特效,不要依托Win7系统的API实现的方法

用wpf容易一些。令窗体透明度下降,刷新画面,截图,把窗体背景改成空,放一个Rectangle显示截的图,给那个Rectangle加BlurEffect。定时更换截图。--来自相机+平板电脑+手机融合成的的Lumia 1520

如何在静态网页中加鼠标特效

下一个网页特效软件

[铭扬]网页特效大师是一款极好的网页特效制作软件。收集的特效包括时间特效,文字特效,图形图像处理,鼠标特效,页面特效,小甜饼,在线游戏,其它特效等等。而且内置浏览器,您可以随时预览特效效果,加上操作简单,特别适合各级网页制作人士使用。您不妨下载试试。

经过几个月的VB学习,在李文东和李涛的帮助下,我终于完成了《百灵鸟网页特效》。目前为免费软件,其中采用《网页特效制作专家》的部分特效代码和几个工具,在此表示感谢。


本文名称:vb点虐 特效 vbnet tabcontrol
链接地址:http://cdxtjz.cn/article/ddsjpsi.html

其他资讯