Dim b As New Bitmap(320, 200)'定義圖像寬高
目前創(chuàng)新互聯(lián)已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、華容網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
Dim clrs As Color=Color.Black
for y as int32=1 to 199
for x as int32=1 to 319
if x=y then
clrs = Color.White'假設(shè)是對角線,x=y時使用白色
else
clrs = Color.Black'平時使用黑色
endif
b.SetPixel(x, y, clrs)'畫點
next
next
b.Save("test.tif", System.Drawing.Imaging.ImageFormat.Tiff)'保存到圖片文件
==================
原創(chuàng)例子,祝進步!!
namespace Linfo
{
public partial class VerifyCode : BasePage
{
public Random rand = new Random();
protected void Page_Load(object sender, EventArgs e)
{
string strListCode = "0123456789abcdefghigklmnopqrstuvwxyz";
int num = 0;
string strNum = num.ToString();
string strListNum = "";
for (int i = 0; i = 3; i++)
{
num = this.rand.Next(1, 36);
strListNum = strListNum + strListCode.Substring(num - 1, 1);
}
this.Session["checkcode"] = strListNum;
base.Response.Cookies.Add(new HttpCookie("CheckCode", SHA1(strListNum)));
this.CreateImage(strListNum);
}
private void CreateImage(string checkCode)
{
int iwidth = checkCode.Length * 8;
Bitmap image = new Bitmap(70, 30);
Graphics g = Graphics.FromImage(image);
g.SmoothingMode = SmoothingMode.HighQuality;
Font f = new Font("Arial ", 14f, FontStyle.Bold);
Brush b = new SolidBrush(Color.Black);
Rectangle rect = new Rectangle(0, 0, 80, 30);
HatchBrush hatchBrush = new HatchBrush(HatchStyle.DarkDownwardDiagonal, Color.LightGray, Color.LightSkyBlue);
g.FillRectangle(hatchBrush, rect);
float CPostion = 1f;
for (int i = 0; i checkCode.Length; i++)
{
this.TransformG(g);
SizeF size = g.MeasureString(checkCode[i].ToString(), f);
g.DrawString(checkCode[i].ToString(), f, b, CPostion, 5f);
CPostion += size.Width - 1f;
g.ResetTransform();
}
MemoryStream ms = new MemoryStream();
image.Save(ms, ImageFormat.Jpeg);
g.Dispose();
image.Dispose();
base.Response.ClearContent();
base.Response.ContentType = "image/Jpeg";
base.Response.BinaryWrite(ms.ToArray());
}
private void TransformG(Graphics g)
{
Matrix myMatrix = new Matrix();
int num1 = this.rand.Next(80, 900);
int num2 = this.rand.Next(80, 800);
float dd1 = num1;
float dd2 = num2;
dd1 /= 10000f;
dd2 /= 10000f;
float f1 = dd1;
float f2 = dd2;
myMatrix.Shear(f1, f2);
g.MultiplyTransform(myMatrix);
}
}
}
Pset (x, y), color
其中x,y是所畫點的坐標值,color是點的顏色值,比如:
Me.PSet (100, 100), vbRed '在當前窗體的(100,100)位置畫一個紅色的點
又比如:
Picture1.PSet (Picture1.ScaleWidth \ 2, Picture1.ScaleHeight \ 2), vbBlue '在Picture1中的中心位置畫一個藍色的點
.NET確實沒有提供畫一個像素點得方法
你可以試一下用FillEllipse填充一個寬1像素,高2像素的橢圓
原理就是FillEllipse的時候,最左邊那一列一般都會多出一個一像素的點;高至少要2,少了就什么都畫不出來
自己用GDI+畫的 無論什么什么尺寸的picturebox都行
不過別太小了o(∩_∩)o
代碼放在哪里自己決定啊
最好是放在 picturebox的resize時間里
每次picturebox大小改變都重畫一次坐標
Dim b As New Bitmap(PictureBox1.Width, PictureBox1.Height)
Dim g As Graphics = Graphics.FromImage(b)
g.Clear(Color.White)
Dim p As New Pen(Color.Black)
p.EndCap = Drawing2D.LineCap.ArrowAnchor
g.DrawLine(p, 30, PictureBox1.Height - 30, 30, 30)
g.DrawLine(p, 30, PictureBox1.Height - 30, PictureBox1.Width - 30, PictureBox1.Height - 30)
Dim i As Integer
Dim bs As New SolidBrush(Color.Green)
Dim po As New Point
po.X = 0
po.Y = PictureBox1.Height - 35
For i = 700 To 1000 Step 50
g.DrawString(i, Me.Font, bs, po.X, po.Y)
g.DrawLine(p, po.X + 28, po.Y + 5, po.X + 30, po.Y + 5)
po.Y -= (PictureBox1.Height - 100) / 6
Next
po.X = 30
po.Y = PictureBox1.Height - 30
For i = 0 To 40 Step 5
g.DrawString(i, Me.Font, bs, po.X, po.Y + 5)
g.DrawLine(p, po.X, po.Y + 2, po.X, po.Y)
po.X += (PictureBox1.Width - 100) / 8
Next
PictureBox1.Image = b
VB有專門的繪圖函數(shù),可以直接繪制簡單的圖形,畫點可以參考以下代碼,取自MSDN
PSet 方法示例
這個示例用 PSet 方法在窗體上畫五彩碎紙。想運行這個示例,將代碼放入窗體的General 部分。按 F5 并單擊窗體。
Sub Form_Click ()
Dim CX, CY, Msg, XPos, YPos ' Declare variables.
ScaleMode = 3 ' 設(shè)置 ScaleMode 為像素。
DrawWidth = 5 ' 設(shè)置 DrawWidth.
ForeColor = QBColor(4) ' 設(shè)置前景為紅色。
FontSize = 24 ' 設(shè)置點的大小。
CX = ScaleWidth / 2 ' 得到水平中點。
CY = ScaleHeight / 2 ' 得到垂直中點。
Cls ' 清窗體。
Msg = "Happy New Year!"
CurrentX = CX - TextWidth(Msg) / 2 ' 水平位置。
CurrentY = CY - TextHeight(Msg) ' 垂直位置。
Print Msg ' 打印消息。
Do
XPos = Rnd * ScaleWidth ' 得到水平位置。
YPos = Rnd * ScaleHeight ' 得到垂直位置。
PSet (XPos, YPos), QBColor(Rnd * 15) ' 畫五彩碎紙。
DoEvents ' 進行
Loop ' 其它處理。
End Sub