vb.net抗锯齿 enb 抗锯齿

vb.net 画线再画保留以前画得

可以把所有画的线都保存在一个列表中,画的时候全部画出即可。如下:

网站建设哪家好,找创新互联公司!专注于网页设计、网站建设、微信开发、重庆小程序开发公司、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了顺义免费建站欢迎大家使用!

Public Class Form1

Class Line      '直线类

  Public Point1, Point2 As Point     '成员,直线的两个端点

  Sub New(p1 As Point, p2 As Point)   '构造方法

      Point1 = p1

      Point2 = p2

  End Sub

  Public Sub Draw(g As Graphics)      '绘制方法

      g.DrawLine(Pens.Black, Point1, Point2)

  End Sub

End Class

Private Lines As New List(Of Line)      '列表用于保存所有画下的直线

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

  BackColor = Color.White

  DoubleBuffered = True       '开启双缓冲可有效避免闪烁

End Sub

Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles Me.MouseDown

  Lines.Add(New Line(e.Location, e.Location))     '在直线列表中添加直线

End Sub

Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove

  If e.Button  Windows.Forms.MouseButtons.Left Then Return '左键未按下

  '鼠标拖动时改变列表最后一条直线(也即当前直线的第二个端点)

  Lines(Lines.Count - 1).Point2 = e.Location

  Refresh()       '刷新窗体

End Sub

'在Form的Paint事件中绘制所有直线,每次Form1重绘时都会触发Paint事件

'PS: 也可以通过重写OnPaint方法来达到类似的效果

Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint

  e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias    '开启抗锯齿

  For Each l In Lines     '遍历所有直线

      l.Draw(e.Graphics)  '调用绘制方法,传入的参数可以理解为画布

  Next

End Sub

End Class

运行效果:

vb中样条曲线问题

不引用的话,VB做不到。这事情要看VB的版本。如果是6.0的话,要去网上下载GDIPLUS的库文件或者自己声明GDI+的API。如果是VB.NET的话,VB自带GDI+,但是也可以下载GDIPLUS库来用。如果不知道去哪里下载,我下载有,你可以问我要。我使用VB6.0。下载gdiplus以后,在VB里面引用这个库,注意要选择“所有文件”才能看到这个库。gdi+里面的path功能可以实现样条:Private

TOKEN

As

Long'GDI+对象

Private

Graphics

As

Long'画板

Private

Sub

InitGDIPlus()

'初始化GDI+

Dim

uInput

As

GdiplusStartupInput

uInput.GdiplusVersion

=

1

If

GdiplusStartup(TOKEN,

uInput)

Ok

Then

'初始化错误

MsgBox

"GDI+

初始化错误。程序即将关闭。",

vbCritical,

"InitError"

End

End

If

GdipCreateFromHDC

Me.hDC,

Graphics'创建画板

GdipSetSmoothingMode

Graphics,

SmoothingModeAntiAlias'设置为反锯齿

End

SubPrivate

Sub

TerminateGDIPlus()

GdipDeleteGraphics

Graphics

'释放graphics占用的内存

GdiplusShutdown

TOKEN

'关闭GDI+

End

SubPrivate

Sub

Form_Load()

InitGDIPlus

'初始化End

SubPrivate

Sub

Command1_Click()

Dim

path

As

Long

Dim

m(3)

As

POINTF

'以下是坐标,你可以自由改变

m(0).x

=

m(0).y

=

m(1).x

=

10

m(1).y

=

100

m(2).x

=

20

m(2).y

=

3

m(3).x

=

500

m(3).y

=

100

Dim

pen

As

Long

GdipCreatePen1

HFF000000,

2,

UnitPixel,

pen

'创建画笔,用来画出样条

GdipCreatePath

FillModeAlternate,

path

'创建path

GdipAddPathBeziers

path,

m(0),

4

'创建样条'Count是说坐标的个数,points只能传递数组的第一个元素,不能传递数组。

GdipDrawPath

Graphics,

pen,

path

'画出样条

GdipDeletePen

pen

'删除画笔

GdipDeletePath

path

'删除样条End

SubPrivate

Sub

Form_Unload(Cancel

As

Integer)

TerminateGDIPlus

'删除GDI+

End

Sub

VB6或者Vb.Net或者GDI,如何设置单张png图片的透明度,并且平滑没有毛刺?

Private Sub Picture1_Paint()

Dim l As Long, t As Long

l = (Picture1.Width - Picture1.ScaleWidth) / 2 '求左右边偏差

t = (Picture1.Height - Picture1.ScaleHeight) / 2 '求上下边偏差

Picture1.PaintPicture Me.Picture, 0, 0, , , Picture1.Left + l, Picture1.Top + t, Picture1.ScaleWidth, Picture1.ScaleHeight '载入图片,就用这行

'Picture1.PaintPicture Me.Image, 0, 0, , , Picture1.Left + l, Picture1.Top + t, Picture1.ScaleWidth, Picture1.ScaleHeight '复制的图片,就用这行

End Sub

关于用VB.NET 模仿输出photoshop 里面4种字体样式,该如何做到?

有个程序叫做ClearType,如果你是win7的,那你一直使用ClearType。使用ClearType可以把字体变得平滑,否则变得浑厚。锐利应该是锐化字体,犀利...我也没见过这种样式的文字,有空再看。 firefox也有这种功能,可以取消或使用ClearType.

我的想法是:

先启用个人程序的ClearType(置于怎么使用,你去查下,我也不知道),然后GDI截取文字部分的图片,然后返回原来的ClearType状态,再输出图像.


当前文章:vb.net抗锯齿 enb 抗锯齿
本文链接:http://scyanting.com/article/dogppgh.html