在按鈕的點擊時間里面,把文本框的值取到,然后通過拼接sql語句的方式,去數(shù)據(jù)庫查詢,得到結果集Ds,綁定給DataGridView就行了。
公司專注于為企業(yè)提供網(wǎng)站設計、成都網(wǎng)站建設、微信公眾號開發(fā)、商城網(wǎng)站建設,微信小程序開發(fā),軟件按需制作網(wǎng)站等一站式互聯(lián)網(wǎng)企業(yè)服務。憑借多年豐富的經(jīng)驗,我們會仔細了解各客戶的需求而做出多方面的分析、設計、整合,為客戶設計出具風格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務。
gdi+沒有提供模糊的功能,也沒有相應的api,要做模糊效果,照樣需要讀取像素數(shù)組,用模糊算法處理后返給圖像。
gdi+倒是提供了反鋸齒的功能,但只能使文字或圖形邊緣與背景過度更自然,不能用來模糊圖像。
用vb的GetDIBits和SetDIBits,應該不會很慢呀,我用vb.net的LockBits獲取像素數(shù)組,再取周圍像素的平均值模糊一個200x200像素的圖像,基本上都用不到0.02秒的,用vb和gdi應該不會比這個慢
思路如下:
得到圖片文件夾路徑里所有圖片的文件名。
對這些文件名進行判斷,是否包含你所謂的模糊的文字。
當判斷發(fā)現(xiàn)包含時,就復制對應的圖片到你想到的對應的目錄。
Imports?System
Imports?System.Drawing
Imports?System.Drawing.Imaging
Imports?System.Runtime.InteropServices
'''?summary
'''?Summary?description?for?TextShadow
'''?/summary
'''?remarks/remarks
Public?Class?gaoshiBLUR
Public?newbmp?As?Bitmap
StructLayout(LayoutKind.Explicit)?Structure?rgbA
FieldOffset(0)?Public?R?As?Byte
FieldOffset(1)?Public?G?As?Byte
FieldOffset(2)?Public?B?As?Byte
FieldOffset(3)?Public?A?As?Byte
FieldOffset(0)?Public?col?As?Integer
End?Structure
Private?m_radius?As?Integer?=?5
'''?summary
'''?高斯卷積矩陣
'''?/summary
'''?remarks/remarks
Private?gaussMatrix?As?Integer()
'''?summary
'''?卷積核
'''?/summary
'''?remarks/remarks
Private?nuclear?As?Integer?=?0
'''?summary
'''?模糊半徑
'''?/summary
'''?value/value
'''?returns/returns
'''?remarks/remarks
Public?Property?Radius()?As?Integer
Get
Return?m_radius
End?Get
Set(ByVal?Value?As?Integer)
If?(m_radius??Value)?Then
m_radius?=?Value
MakeGaussMatrix()
End?If
End?Set
End?Property
'''?summary
'''?高斯模糊
'''?/summary
'''?param?name="bmp"要處理的圖像/param
'''?remarks/remarks
Public?Sub?MaskShadow(ByVal?bmp?As?Bitmap)
If?nuclear?=?0?Then?MakeGaussMatrix()
Dim?rt?As?Rectangle?=?New?Rectangle(0,?0,?bmp.Width,?bmp.Height)
'?克隆臨時位圖,作為卷積源
Dim?tmp?As?Bitmap?=?bmp.Clone()
Dim?dest?As?BitmapData?=?bmp.LockBits(rt,?ImageLockMode.WriteOnly,?PixelFormat.Format32bppArgb)
Dim?source?As?BitmapData?=?tmp.LockBits(rt,?ImageLockMode.ReadOnly,?PixelFormat.Format32bppArgb)
Debug.Print(Radius)
Debug.Print(dest.Width.ToString)
Debug.Print(nuclear)
Dim?Number?As?Integer?=?(bmp.Height?*?dest.Stride?-?1)?/?4???'?圖像數(shù)據(jù)元素的個數(shù),注意.net中數(shù)組下標是從0開始的
Dim?bmpdata(Number)?As?Integer
Dim?tmpdata(Number)?As?Integer
Dim?TMPrgb(Number)?As?rgbA?'臨時參考顏色
Dim?BMPrgb(Number)?As?rgbA?'計算結果后的顏色
'ReDim?bmpdata(Number)
'ReDim?TMPrgb(Number)
Marshal.Copy(source.Scan0,?tmpdata,?0,?Number)
Dim?i?As?Long
Dim?j?As?Long
j?=?Number
Dim?w,?h?As?Long
Dim?yi,?xi?As?Long
Dim?iw,?ih,?iiw,?iih,?iii?As?Long
Dim?k?As?Long
Dim?nn?As?Integer?=?(Radius?*?2?+?1)?^?2
Dim?n?As?Integer?=?Radius?*?2?+?1
w?=?bmp.Width
h?=?bmp.Height
'?System.Array.Copy(TMPrgb,?tmpdata,?j)
For?i?=?0?To?j
TMPrgb(i).col?=?tmpdata(i)
Next?i
i?=?0
For?i?=?0?To?j
ih?=?Int(i?/?w)
iw?=?i?-?ih?*?w
Dim?r?As?Double?=?0
Dim?g?As?Double?=?0
Dim?b?As?Double?=?0
Dim?a?As?Double?=?0
Dim?weight?As?Double
For?k?=?0?To?nn
'需要解決的是周邊遍歷顏色值然后相加(r=r1*weight1+r2*weight2+r3*weight3+r4*weight4+r5*weight5+...r*weight)
yi?=?Int(k?/?n)
xi?=?k?-?yi?*?n
yi?-=?Radius
xi?-=?Radius
iiw?=?iw?+?xi
iih?=?ih?+?yi
'yi?=?Int(k?/?n)
'xi?=?k?-?yi?*?n
'iih?=?ih?+?yi?-?Radius
'iiw?=?iw?+?xi?-?Radius
If?(iiw??0?OrElse?iih??0)?Or?(iiw??w?-?1?OrElse?iih??h?-?1)?Then
iiw?=?iw
iih?=?ih
iii?=?i
Else
iii?=?iih?*?w
iii?+=?iiw
End?If
weight?=?gaussMatrix(k)?/?1000
r?+=?TMPrgb(iii).R?*?weight
g?+=?TMPrgb(iii).G?*?weight
b?+=?TMPrgb(iii).B?*?weight
a?+=?TMPrgb(iii).A?*?weight
Next
'TMPrgb(i).col?=?tmpdata(i)
'r?=?TMPrgb(i).R?*?weight
'g?=?TMPrgb(i).G?*?weight
'b?=?TMPrgb(i).B?*?weight
BMPrgb(i).R?=?IIf(r??255,?255,?r)
BMPrgb(i).G?=?IIf(g??255,?255,?g)
BMPrgb(i).B?=?IIf(b??255,?255,?b)
BMPrgb(i).A?=?IIf(a??255,?255,?a)
bmpdata(i)?=?BMPrgb(i).col
'Debug.Print(TMPrgb(i).R)
Next
Marshal.Copy(bmpdata,?0,?dest.Scan0,?Number)
tmp.UnlockBits(source)
bmp.UnlockBits(dest)
newbmp?=?bmp.Clone
tmp.Dispose()
'?End?Try
End?Sub
'''?summary
'''?高斯卷積矩陣
'''?/summary
'''?remarks/remarks
Protected?Sub?MakeGaussMatrix()
Dim?Q?As?Double?=?Radius?/?2
If?(Q?=?0.0)?Then?Q?=?0.1
Dim?n?As?Integer?=?Radius?*?2?+?1
Dim?index?As?Integer?=?0
nuclear?=?0
ReDim?gaussMatrix(n?*?n)
Dim?x?As?Integer
Dim?y?As?Integer
For?x?=?-Radius?To?Radius
For?y?=?-Radius?To?Radius
gaussMatrix(index)?=?Math.Round(Math.Exp(-((x?*?x?+?y?*?y))?/?(2.0?*?Q?*?Q))?/?(2.0?*?Math.PI?*?Q?*?Q)?*?1000.0)
nuclear?+=?gaussMatrix(index)
index?+=?1
Next
Next
End?Sub
End?Class
使用方法.
Dim?bmp?As?Bitmap?=?PictureBox1.Image.Clone
Dim?x?As?New?gaoshiBLUR
x.Radius?=?30
x.MaskShadow(bmp)
PictureBox2.Image?=?x.newbmp.Clone