VB2008中用GDI+画图的问题

用以下代码在PictureBoxTemperature001中绘图,怎么会没有显示?语法没有任何错误。
控件PictureBoxTemperature001位于窗体Form1中的一个控件 TabControl 上
若PictureBoxTemperature001直接在窗体Form1中可以显示。
输入时Me. 后面自动出现的PictureBoxTemperature001
'图形显示
Dim graTemp001 As Graphics = Me.PictureBoxTemperature001.CreateGraphics
Dim intWidthAll, intHeightAll As Integer
intWidthAll = PictureBoxTemperature001.Width
intHeightAll = PictureBoxTemperature001.Height

'绘制矩形
Dim intX1, intY1, intWidth, intHeight, intWWW As Integer
intWWW = 10 '矩形到Picture边界的距离
intX1 = intWWW : intY1 = intWWW
intWidth = intWidthAll - 2 * intWWW : intHeight = intHeightAll - 2 * intWWW

Dim MyPen As New Pen(Color.BlueViolet, 2)
Dim MyPen1 As New Pen(Color.Red, 3)
Dim rect As New Rectangle(intX1, intY1, intWidth, intHeight)
'左上角位于 (intX1, intY1) 的矩形。该矩形的宽度为 intWidth,高度为intHeight
graTemp001.DrawRectangle(MyPen, rect)

因为一刷新图就消失了,控件 TabControl上会自动刷新,在Form1_Paint中绘制可避免

或者改成下面的代码

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        PictureBoxTemperature001.Image = Nothing
        Dim intWidthAll, intHeightAll As Integer
        intWidthAll = PictureBoxTemperature001.Width
        intHeightAll = PictureBoxTemperature001.Height
        Dim bm As New Bitmap(intWidthAll, intHeightAll)
        Dim graTemp001 As Graphics = Graphics.FromImage(bm)
        '绘制矩形
        Dim intX1, intY1, intWidth, intHeight, intWWW As Integer
        intWWW = 10                '矩形到Picture边界的距离
        intX1 = intWWW : intY1 = intWWW
        intWidth = intWidthAll - 2 * intWWW : intHeight = intHeightAll - 2 * intWWW
        Dim MyPen As New Pen(Color.BlueViolet, 2)
        Dim MyPen1 As New Pen(Color.Red, 3)
        Dim rect As New Rectangle(intX1, intY1, intWidth, intHeight)
        '左上角位于 (intX1, intY1) 的矩形。该矩形的宽度为 intWidth,高度为intHeight
        graTemp001.DrawRectangle(MyPen, rect)
        PictureBoxTemperature001.Image = bm
        PictureBoxTemperature001.Refresh()
        graTemp001.Dispose()
    End Sub

温馨提示:内容为网友见解,仅供参考
无其他回答

VB2008中用GDI+画图的问题
intY1, intWidth, intHeight, intWWW As Integer intWWW = 10 '矩形到Picture边界的距离 intX1 = intWWW : intY1 = intWWW intWidth = intWidthAll - 2 * intWWW : intHeight = intHeightAll - 2 * intWWW Dim MyPen As New Pen(Color.BlueViolet...

GDI+图片处理函数问题
Declare Function GdipSetImageAttributesColorMatrix Lib "gdiplus" (ByVal imageattr As Long, ByVal ClrAdjType As ColorAdjustType, ByVal enableFlag As Long, colourMatrix As Any, grayMatrix As Any, ByVal flags As ColorMatrixFlags) As GpStatus 你应该将函数声明为这样 vIstaswx ...

vb 如何利用GDI+把程序内所有字体消锯齿
质量等级是Graphics类的一个属性。若要设置质量等级,需要调用Graphics对象的SetTextRenderingHint方法。该方法接受一个TextRenderingHint枚举成员之一,该枚举定义在头文件Gdiplusenums.h中。GDI+ 既提供传统的 AntiAlias,也提供一种基于 Microsoft® ClearType® 显示技术的新型 AntiAlias,后者只在Wi...

VB 如何用GDI+修改图片的分辨率并无损压缩保存
Private Declare Function GdipCreateBitmapFromFile Lib "GDIPlus" (ByVal filename As Long, Bitmap As Long) As Long 原来的代码对照下 Public Sub SaveJPG(ByVal pict As StdPicture, ByVal filename As String, Optional ByVal Quality As Byte = 80, Optional ByVal DPI As Single = 0)D...

VB 如何用GDI+更改图像分辨率
If lRes Then Err.Raise 5, , "Cannot save the image. GDI+ Error:" & lResEnd If End Sub '调用方法, 可修改压缩比例 和 修改分辨率。Picture1要有加载图才行,稍微改改可以直接读文件,直接转 无需加载到图像框里再保存。Private Sub Command2_Click()SaveJPG Picture1, "C:\\123.j...

vb在pic中gdi后怎么更新新的绘图
1、首先在vb中使用鼠标是否点中图形,建立一个白底色的Pic。2、其次用黑色画上这个图形,再检查鼠标相应位置像素的颜色。3、最后选中的标示,需要给选中的目标图元绘制边框绘制新的绘图即可。

VB 用GDI+ 如何实现图片的旋转?
图形平滑,边缘可不平滑 模块:Option Explicit Public Declare Function GdiplusStartup Lib "gdiplus" (token As Long, inputbuf As GdiplusStartupInput, Optional ByVal outputbuf As Long = 0) As GpStatus Public Declare Function GdiplusShutdown Lib "gdiplus" (ByVal token As Long) As Gp...

GDI+做图像模糊,我听说还能高斯模糊 GDI数组不用了,那个我会。 我只...
gdi+没有提供模糊的功能,也没有相应的api,要做模糊效果,照样需要读取像素数组,用模糊算法处理后返给图像。gdi+倒是提供了反锯齿的功能,但只能使文字或图形边缘与背景过度更自然,不能用来模糊图像。用vb的GetDIBits和SetDIBits,应该不会很慢呀,我用vb.net的LockBits获取像素数组,再取周围像素的...

vb如何在picture上用GDI绘图?
方案一.使用Declare的方式,声明所有需要用到的GDI函数,在PictureBox的DC上完成绘图 方案二.VB本身也提供有绘图函数,直接用之即可

vb 我用gdi+画图,怎么样清除画的圆
Me.CreateGraphics.Clear(Button1.BackColor)http:\/\/msdn.microsoft.com\/zh-cn\/express\/system.drawing.graphics.clear(v=vs.89).aspx

相似回答