.NET绘图的相关注意事项,常见问题

一、.net是通过调用API来完成的画图,一般可以在控件和窗体上面绘图,也可以在bitmap里面绘图。bitmap继承于Image

二、在透明的bitmap项目里面绘制文字,即drawstring方法,会产生黑边,但是可以通过设置背景颜色来解决此类问题

例如g.clear(color.black)

三、一个很奇怪的问题(已经解决)

我们有的时候不想启动ps来处理图片,但是我已经有关于图片处理的应用程序了,但是我导出的图片不能被pr、ae等软件识别呢,它告诉我文件的头文件损坏

解决方法:导出类型为png的图片,当然,你闲的话可以打开winhex检测头文件是89 50 4E 47开头的,他表示?PNG

四、做到picturebox实时刷新,做到我正在编辑的假象呢

可以在picturebox mouse move事件里加入

Pic.Invalidate()
Pic.Update()

五、如何在.net做动画?

不知道有没有听说过Gif.Components,它可以帮助你解决问题(第三方

例如:

Protected Image As Imaging.FrameDimension
    Protected bmp As Bitmap
    Protected bmp2() As Bitmap
    Public AGE As New Gif.Components.AnimatedGifEncoder()

    Public Function SplitGif(gif As String, SavePath As String, SaveName As String, SaveStyle As String)
        bmp = New Bitmap(gif)
        Image = New Imaging.FrameDimension(bmp.FrameDimensionsList(0))
        Dim bmp2(bmp.GetFrameCount(Image) - 1)
        For i As Integer = 0 To bmp2.Count - 1
            bmp.SelectActiveFrame(Image, i)
            bmp2(i) = New Bitmap(bmp)
        Next
        For i As Integer = 0 To bmp2.Count - 1
            bmp2(i).Save(SavePath & "\" & SaveName & i & "." & SaveStyle)
        Next
        Return vbNull
    End Function

    Public Function CraftGif(sleep As Integer, pics As String(), out As String)

        Dim count As Integer
        count = pics.Count

        AGE.Start(out)
        AGE.SetDelay(sleep)
        AGE.SetRepeat(0)
        Dim i As Integer = 0
        While i < count
            AGE.AddFrame(Drawing.Image.FromFile(pics(i)))
            Math.Max(Threading.Interlocked.Increment(i), i - 1)
        End While
        AGE.Finish()
        Return vbNull
    End Function

六、如何解决自己打开图片,我想替换原来的图片,但是图片被占用

很简单,先把它加载到流,然后给bitmap赋值,最后释放流。

例如:

Dim op As New OpenFileDialog
op.Filter = "All .net Picture Files|*.jpg;*.png;*.bmp;*.ico;*.jpeg;*.*"
op.Title = "选择一个图片"
If op.ShowDialog() = DialogResult.OK Then
    Dim fs As New FileStream(op.FileName, FileMode.Open, FileAccess.Read)
    Dim bmp As Bitmap = Image.FromStream(fs)
    Form3.pic = bmp
    Form3.ShowDialog()
    Pic.Location = New Point(0, 0)
    fs.Close()
End If

form3设置给用户选择图片编辑方式(各位可以忽略这一步)

然后就可以给原文件替换了

猜你喜欢

转载自blog.csdn.net/weixin_56050945/article/details/128490182