章鱼哥出品—VB.NET 如何绘制圆角矩形,并适应窗体大小

Public Class Form1
    '*********************************************************************
    '作者:章鱼哥,QQ:3107073263 群:309816713
    '如有疑问或好的建议请联系我,大家一起进步
    '*********************************************************************
    '绘制圆角矩形函数
    Private Function GetRoundedRectPath(ByVal rect As Rectangle, ByVal radius As Integer) As System.Drawing.Drawing2D.GraphicsPath
        rect.Offset(-1, -1)
        Dim RoundRect As New Rectangle(rect.Location, New Size(radius - 1, radius - 1))

        Dim path As New System.Drawing.Drawing2D.GraphicsPath
        path.AddArc(RoundRect, 180, 90)     '左上角
        RoundRect.X = rect.Right - radius   '右上角
        path.AddArc(RoundRect, 270, 90)
        RoundRect.Y = rect.Bottom - radius  '右下角
        path.AddArc(RoundRect, 0, 90)
        RoundRect.X = rect.Left             '左下角
        path.AddArc(RoundRect, 90, 90)
        path.CloseFigure()
        Return path
    End Function
    '绘制矩形
    Private Sub DrawingRect()
        Dim g As Graphics = Me.CreateGraphics '定义一个画布
        Dim Pen As New Pen(Brushes.DarkRed, 2) '定义一个画笔
        Dim Hei As Integer = Me.Height
        Dim Wid As Integer = Me.Width
        '矩形的位置和长宽随着窗体的变化而改变
        Dim Rec As New Rectangle(Int(Wid / 5), Int(Hei / 5), Int(Wid / 2), Int(Hei / 2))
        '  g.DrawRectangle(Pen, Rec)
        '清楚现有的矩形
        g.Clear(Me.BackColor)
        g.DrawPath(Pen, GetRoundedRectPath(Rec, 30))
    End Sub

    Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        DrawingRect()
    End Sub

    Private Sub Form1_SizeChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.SizeChanged
        Me.Invalidate() '此函数可引发Paint事件
    End Sub
End Class

原窗体绘制:

缩小窗体时:

时间: 2024-11-10 18:01:20

章鱼哥出品—VB.NET 如何绘制圆角矩形,并适应窗体大小的相关文章

【VB6 GDI+进阶】通过拼接圆弧和线绘制圆角矩形

GDI+中没有直接绘制圆角矩形的函数.本篇将详细介绍如何通过拼接圆弧和线绘制圆角矩形,结尾附封装好的函数,可以直接调用. 1.GdipDrawArcI(绘制圆弧) 函数声明如下: Public Declare Function GdipDrawArcI _ Lib "gdiplus" (ByVal graphics As Long, _ ByVal Pen As Long, _ ByVal X As Long, _ ByVal Y As Long, _ ByVal Width As L

章鱼哥出品—VB.NET Office操作之Word(四)

本文是在 章鱼哥出品-VB.NET Office操作之Word(二)中添加内容的具体实现,读者可以借鉴看下,注意本文应该与三结合在一起使用,是在三的基础上添加了几种功能的实现. 实现窗体: 代码实现:代码直接复制到上文的窗体类中 '********************************************************************* '作者:章鱼哥,QQ:3107073263 群:309816713     '如有疑问或好的建议请联系我,大家一起进步   '*

canvas.drawRoundRect方法,绘制圆角矩形

public void drawRoundRect (RectF rect, float rx, float ry, Paint paint) Draw the specified round-rect using the specified paint. The roundrect will be filled or framed based on the Style in the paint. Parameters rect The rectangular bounds of the rou

drawRoundRect方法:绘制圆角矩形

[功能说明]该方法用于在画布上绘制圆角矩形,通过指定RectF对象以及圆角半径来实现.该方法是绘制圆角矩形的主要方法,同时也可以通过设置画笔的空心效果来绘制空心的圆角矩形. [基本语法]public void drawRoundRect (RectF rect, float rx, float ry, Paint paint) 参数说明 rect:RectF对象. rx:x方向上的圆角半径. ry:y方向上的圆角半径. paint:绘制时所使用的画笔. [实例演示]下面通过代码来演示如何在画布上

详述Canvas(五)/绘制圆角矩形

Canvas并没有提供绘制圆角矩形的方法,但是通过观察,我们可以发现,其实我们可以将圆角矩形分为四段,可以通过使用arcTo来实现. 我们假设起点为x,y.绘制的矩形宽高为w,h.圆角的半径为r;所以将起点设置在(x+r,y)处,然后acrTo(x+w,y,x+w,y+h,r),对于终点,其实只要y值大于绿色点的都是可以的(这部分在绘制曲线部分已经详述).此处我们将终点设为(x+w,y+h);这就是第一段曲线.第一段曲线绘制完毕之后,画笔落在了下图绿色点的位置. 现在再看下第二段曲线: 因此我们

canva绘制圆角矩形

在做组态的时候,需要支持矩形圆角格式,但是因为canvas本身不带有圆角矩形,需要自行算出坐标进行绘制 方案一.统一圆角 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canvas制作圆角矩形(包括填充矩形的功能)</title> </head> <body> <canvas id="myCanvas&

Android中绘制圆角矩形图片及任意形状图片

圆角矩形图片在苹果的产品中很流行,相比于普通的矩形,很多人都喜欢圆角矩形的图片,因为它避开了直角的生硬,带来更好的用户体验,下面是几个设计的例子: 下面在Android中实现将普通的矩形图片绘制成圆角矩形.首先看最终效果: 代码清单: package com.example.phototest; import android.os.Bundle; import android.app.Activity; import android.graphics.Bitmap; import android

CSS3绘制圆角矩形的简单示例

随着网络的发展,CSS 也在不断的完善,充分吸取多年来 Web 发展的需求,提出了很多新颖的 CSS 特性,例如很受欢迎的圆角矩形 border-radius 属性,但很可惜,此属性目前没有得到任何浏览器的支持. 对于一些浏览器,它们有其私有的圆角属性.如 FF 的 -moz-border-radius ,Safari 和 Chrome 的 -webkit-border-radius .效果见下图: FF 的圆角Safari 和 Chrome 的圆角(Safari 和 Chrome 使用的是同一

canvas 绘制圆角矩形

<!DOCTYPE HTML> <head> <meta charset = "utf-8"> <title>canvas</title> <style type="text/css"> #canvas{border:1px solid #eee ; display:block; background-color: #B36666; margin: 20px auto; } </style