-
2016-11-11 21:38:06
private void label1_Paint(object sender, PaintEventArgs e) { Draw(e.ClipRectangle, e.Graphics, 16); base.OnPaint(e); } private void Draw(Rectangle rectangle, Graphics g, int _radius) { Pen shadowPen = new Pen(Color.Blue); g.DrawPath(shadowPen, DrawRoundRect(rectangle.X, rectangle.Y, rectangle.Width - 2, rectangle.Height - 1, _radius)); } public static GraphicsPath DrawRoundRect(int x, int y, int width, int height, int radius) { GraphicsPath gp = new GraphicsPath(); gp.AddArc(x, y, radius, radius, 180, 90); gp.AddArc(width - radius, y, radius, radius, 270, 90); gp.AddArc(width - radius, height - radius, radius, radius, 0, 90); gp.AddArc(x, height - radius, radius, radius, 90, 90); gp.CloseAllFigures(); return gp; }
更多相关内容 -
java圆角矩形边框消除锯齿Demo.rar
2020-04-08 06:58:12主要代码: BufferedImage image = new BufferedImage(400, 120, BufferedImage.TYPE_4BYTE_ABGR); Graphics2D g2d = image.createGraphics(); g2d.setColor(Color.BLUE); ... //g2d.fillRoundRect(0, 0, 400, ... -
Android自定义矩形边框,圆角矩形边框(可以只定义其中某个边的颜色值)
2020-05-27 23:57:26关于边框画线问题,今天在这里做个总结方便自己记忆,也希望能够帮助大家 全边的 代码: 效果图: 全边圆角 代码: 效果图: 只显示某一部分边框 代码: 效果图:关于边框画线问题,今天在这里做个总结方便自己记忆,也希望能够帮助大家
全边的
代码:
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 主体背景颜色值 --> <solid android:color="#ff0000" /> <!-- 边框宽度和颜色值 --> <stroke android:width="10dp" android:color="#0000ff" /> </shape>
效果图:
全边圆角
代码:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 连框颜色值 --> <item> <shape> <corners android:radius="10dp"/> <solid android:color="#00ff00" /> </shape> </item> <!-- 主体背景颜色值 --> <item android:top="10dp" android:bottom="10dp" android:left="10dp" android:right="10dp"> <shape> <corners android:radius="15dp"/> <solid android:color="#ff0000" /> </shape> </item> </layer-list>
效果图:
只显示某一部分边框
代码:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 连框颜色值 --> <item> <shape> <solid android:color="#00ff00" /> </shape> </item> <!-- 主体背景颜色值 --> <!-- 想保留哪一边就设置哪一边边框,列如只有下边框:bottom="10dp", 上top="10dp",右right="10dp" --> <item android:top="10dp" android:bottom="10dp" android:right="10dp"> <shape> <solid android:color="#ff0000" /> </shape> </item> </layer-list>
效果图:
-
JavaScript 使用canvas绘制圆角矩形边框
2020-12-22 18:04:06Canvas并没有提供绘制圆角矩形的方法,但是通过观察,我们可以发现,其实我们可以将圆角矩形分为四段,可以通过使用arcTo来实现。 我们假设起点为x,y.绘制的矩形宽高为w,h.圆角的半径为r;所以将起点设置在(x+r,y)处,...前言
在react项目中需要用到绘制矩形填充, 因为直角矩形不够美观, 需要绘制圆角填充矩形分析
Canvas并没有提供绘制圆角矩形的方法,但是通过观察,我们可以发现,其实我们可以将圆角矩形分为四段,可以通过使用arcTo来实现。
我们假设起点为x,y.绘制的矩形宽高为w,h.圆角的半径为r;所以将起点设置在(x+r,y)处,然后acrTo(x+w,y,x+w,y+h,r),对于终点,其实只要y值大于绿色点的都是可以的(这部分在绘制曲线部分已经详述)。此处我们将终点设为(x+w,y+h);这就是第一段曲线。第一段曲线绘制完毕之后,画笔落在了下图绿色点的位置。
现在再看下第二段曲线:
因此我们直接使用arcTo(x+w,y+h,x,y+h,r)绘制出第二个圆角,第二个曲线绘制完毕后,画笔落在了绿色点位置。
我们可以使用同样的方法来绘制第三个圆角。acrTo(x,y+h,x,y,r)
第四个圆角arcTo(x,y,x+w,y)
这样,一个圆角矩形就完成了。为了方便使用,我们可以将绘制圆角矩形的方法封装在一个函数,或者加入到CanvasRenderingContext2D的原型中。
x,y是矩形的起点;w,h是矩形的宽高;r是圆角矩形的半径CanvasRenderingContext2D.prototype.roundRect = function (x, y, w, h, r) { if (w < 2 * r) {r = w / 2;} if (h < 2 * r){ r = h / 2;} this.beginPath(); this.moveTo(x+r, y); this.arcTo(x+w, y, x+w, y+h, r); this.arcTo(x+w, y+h, x, y+h, r); this.arcTo(x, y+h, x, y, r); this.arcTo(x, y, x+w, y, r); this.closePath(); return this; }
这里使用了return this,这样我们就可以像使用jquery一样,使用链式语法。
完整代码如下
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <canvas id = "palette" width="400px" height="400px"> 您的浏览器不支持Canvas标签,请升级或更换浏览器 </canvas> <script> var palette = document.querySelector("#palette").getContext("2d"); palette.moveTo(0,0); palette.lineTo(0,300); palette.moveTo(50.5,0); palette.lineTo(50.5,300); palette.moveTo(100.5,0); palette.lineTo(100.5,300); palette.moveTo(150.5,0); palette.lineTo(150.5,300); palette.moveTo(200.5,0); palette.lineTo(200.5,300); palette.moveTo(250.5,0); palette.lineTo(250.5,300); palette.moveTo(300.5,0); palette.lineTo(300.5,300); palette.moveTo(0,0); palette.lineTo(300,0); palette.moveTo(0,50.5); palette.lineTo(300,50.5); palette.moveTo(0,100.5); palette.lineTo(300,100.5); palette.moveTo(0,150.5); palette.lineTo(300,150.5); palette.moveTo(0,200.5); palette.lineTo(300,200.5); palette.moveTo(0,250.5); palette.lineTo(300,250.5); palette.moveTo(0,300.5); palette.lineTo(300,300.5); palette.stroke(); CanvasRenderingContext2D.prototype.roundRect = function (x, y, w, h, r) { if (w < 2 * r) r = w / 2; if (h < 2 * r) r = h / 2; this.beginPath(); this.moveTo(x+r, y); this.arcTo(x+w, y, x+w, y+h, r); this.arcTo(x+w, y+h, x, y+h, r); this.arcTo(x, y+h, x, y, r); this.arcTo(x, y, x+w, y, r); this.closePath(); return this; } palette.lineWidth = 5; palette.strokeStyle = "#F00"; palette.roundRect(50,50,200,150,30).stroke(); // 绘制填充 palette.fillStyle = "rgba(255, 192, 203, 0.5)"; palette.fill(); </script> </body> </html>
内容来源:https://blog.csdn.net/shi851051279/article/details/80436851
原文来源:https://blog.csdn.net/shi851051279/article/details/80436851
原作者:泥猴桃
-
Html轻松实现圆角矩形
2020-12-14 02:53:56问题:如何通过div+css以及定位来实现圆角矩形? 解决方法概述: 内容:首先在<body>标签内部里添加一个大层(大层用来固定整体大框架),然后大层内包含四个小层(四个小层里分别放四个圆角(事先用ps做好... -
自定义View(三)Android 自定义带圆角矩形边框的TextView
2020-10-23 14:56:11// 画空心圆角矩形 // 边框线宽大于0才画 if (strokeWidth > 0) { mRectF.left = mRectF.top = 0.5f * strokeWidth; mRectF.right = getMeasuredWidth() - 0.5f * strokeWidth; mRectF.bottom = getMeasuredHeight...效果图
实现思路
这里就中规中矩的绘制就行,直接贴代码了,注释很想详细
public class BorderTextView extends AppCompatTextView { private int strokeWidth; // 边框线宽 private int strokeColor; // 边框颜色 private int enableColor; // 不可点击颜色 private int contentColor; // 背景颜色 private int pressedColor; // 按下背景颜色 private int cornerRadius; // 圆角半径 private boolean mFollowTextColor; // 边框颜色是否跟随文字颜色 private Paint mPaint = new Paint(); // 画边框所使用画笔对象 private RectF mRectF = new RectF(); // 画边框要使用的矩形 public BorderTextView(Context context) { this(context, null); } public BorderTextView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public BorderTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); // 读取属性值 init(context, attrs); // 初始View initView(); } /** * 初始资源 */ private void init(Context context, AttributeSet attrs) { TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.BorderTextView); contentColor = ta.getColor(R.styleable.BorderTextView_contentBackColor, Color.TRANSPARENT); pressedColor = ta.getColor(R.styleable.BorderTextView_contentPressedColor, contentColor); enableColor = ta.getColor(R.styleable.BorderTextView_enableBackColor, Color.TRANSPARENT); strokeWidth = ta.getDimensionPixelSize(R.styleable.BorderTextView_strokeWidth, 0); strokeColor = ta.getColor(R.styleable.BorderTextView_strokeColor, contentColor); cornerRadius = ta.getDimensionPixelSize(R.styleable.BorderTextView_cornerRadius, 0); mFollowTextColor = ta.getBoolean(R.styleable.BorderTextView_followTextColor, false); ta.recycle(); } /** * 初始化View */ private void initView() { // 初始化画笔 mPaint.setStyle(Paint.Style.STROKE); // 空心效果 mPaint.setAntiAlias(true); // 设置画笔为无锯齿 mPaint.setStrokeWidth(strokeWidth); // 线宽 // 设置边框线的颜色, 如果声明为边框跟随文字颜色且当前边框颜色与文字颜色不同时重新设置边框颜色 if (mFollowTextColor && strokeColor != getCurrentTextColor()) { strokeColor = getCurrentTextColor(); } // 设置背景 setBackground(getPressedSelector(enableColor, contentColor, pressedColor, cornerRadius)); } private Drawable getPressedSelector(int enabledColor, int normalColor, int pressedColor, int radius) { Drawable enabled = createShape(enabledColor, radius); Drawable pressed = createShape(pressedColor, radius); Drawable normal = createShape(normalColor, radius); StateListDrawable drawable = new StateListDrawable(); drawable.addState(new int[]{android.R.attr.state_pressed}, pressed); // 按下状态 , 设置按下的图片 drawable.addState(new int[]{android.R.attr.state_enabled}, normal); // 默认状态,默认状态下的图片 drawable.addState(new int[]{}, enabled); return drawable; } private GradientDrawable createShape(int color, int radius) { GradientDrawable drawable = new GradientDrawable(); drawable.setCornerRadius(radius);//设置4个角的弧度 drawable.setColor(color);// 设置颜色 return drawable; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 设置画笔颜色 mPaint.setColor(strokeColor); // 画空心圆角矩形 // 边框线宽大于0才画 if (strokeWidth > 0) { mRectF.left = mRectF.top = 0.5f * strokeWidth; mRectF.right = getMeasuredWidth() - 0.5f * strokeWidth; mRectF.bottom = getMeasuredHeight() - 0.5f * strokeWidth; canvas.drawRoundRect(mRectF, cornerRadius, cornerRadius, mPaint); } } }
attrs.xml资源文件
<!-- BorderTextView --> <declare-styleable name="BorderTextView"> <attr name="strokeWidth" format="dimension"/> <attr name="cornerRadius" format="dimension"/> <attr name="strokeColor" format="color"/> <attr name="enableBackColor" format="color" /> <attr name="contentBackColor" format="color"/> <attr name="contentPressedColor" format="color"/> <attr name="followTextColor" format="boolean"/> </declare-styleable>
写在最后:原创不易,觉得对自己有帮助的小老弟,欢迎点赞评论~~~
-
安卓用shape画圆角矩形边框
2021-06-03 00:25:17效果图:代码:一、xml方式代码: shape_rec_blue.xml圆角矩形边框android:shape="rectangle">android:width="1dp"android:color="#418DF9" />圆角矩形背景android:shape="rectangle">使用android:layout_... -
纯CSS实现圆角矩形框
2015-04-26 18:53:00往往在一个页面中存在多个圆角框,而每个圆角框有可能其边框颜色各不相同,有没有可能针对不同的设计制作不同的换肤方案呢,答案是有的。在我的这个应用中,可以换不同的皮肤颜色,并且设置颜色方案也并不是一件很难... -
Android-FlycoRoundView-一个扩展原生控件支持圆角矩形框背景的库可以减少相关shape资源文件使用
2019-08-13 04:09:39FlycoRoundView - 一个扩展原生控件支持圆角矩形框背景的库,可以减少相关shape资源文件使用。 -
反向css圆角矩形:边框及代码
2021-08-05 04:26:30反向css圆角矩形:反向css圆角矩形.serif {background: transparent; width:40%;}.serif h1, .serif p {margin:0 10px;}.serif h1 {font-size:2em; color:#fff;}.serif p {padding-bottom:0.5em;}.serif .b1K, .serif... -
canvas圆角矩形/边框/图片
2021-12-16 17:36:33// 圆角矩形 roundRect(x, y, w, h, r, ctx) { ctx.save() ctx.beginPath() // 左上弧线 ctx.arc(x + r, y + r, r, 1 * Math.PI, 1.5 * Math.PI) // 左直线 ctx.moveTo(x, y + r) ctx.... -
圆角矩形框制作 ie-css3.htc 图像投影
2012-04-02 16:54:38利用此文件可以在IE浏览器中直接使用css制作出圆角矩形框,图像投影等特效!并且兼容性很好,此方法支持IE6.0/IE7.0/IE8.0/谷歌浏览器(Chrome)/火狐浏览器(Firefox)/Safari/Opera,其他的本人尚未测试,如果你测试... -
div+css用边框实现圆角矩形(多样式)
2020-09-25 07:39:41css圆角卷起了一阵风波,只用css来做圆角矩形的技术很早就有了,但是在网页的设计过程中,我们通常用图片实现圆角矩形效果。现在网上很多关于无图片实现css圆角矩形的方法,虽说巧妙,但是代码冗长,难以做到简洁 -
android圆角矩形进度条
2015-05-29 10:33:16思路介绍 http://blog.csdn.net/li_xiao_kang/article/details/46225927 -
qml 实现自定义菜单menu,带有圆角矩形边框和阴影
2020-12-06 17:44:47import QtQuick 2.9 import QtQuick.Window 2.2 import QtGraphicalEffects 1.0 import QtQuick.Controls 2.15 Window { id: main visible: true width: 800 height: 600 color: "#CCCCCC" ... -
canvas圆角矩形 PS制作渐变圆角矩形: 方法一:
2021-06-13 04:33:41用canvas画只有一个角是圆角的矩形,能画出来么?CSS布局HTML小编今天和大家分享各位大侠指点,找到方法了float[] radii={12f,12f,0f,0f,0f,0f,0f,0f};path.addRoundRect(new RectF(0, 0, 50, 50), radii, Path.... -
css圆角矩形边框
2020-10-10 15:19:35圆角矩形: border-radius:10px 10px为圆角的半径,越大圆角越大 圆: border-radius:50% -
MFC创建圆角矩形边框
2012-07-17 15:58:58最近在写一个安装程序的界面。需要自绘对话框及一系列控件。 个人认为MFC自定义控件或对话框最基本的思想就是了解这些元素的创建过程,并适当的截取消息进行重写。...我们要绘制一个圆角矩形的边框。 就是响应 -
圆角矩形的html+css实现代码
2020-09-28 09:08:02闲来无事,突然又想起了圆角矩形的实现。不过这个话题大家已经谈了太长时间了。各种各样的实现方案在网上都可以看到。这里仅仅是记录一下个人认为比较好的一个。这个方案不使用任何图片,是纯html+css实现。 css代码... -
AndroidUi(2)-圆角矩形
2021-06-03 05:32:33圆角矩形Paste_Image.pngandroid:shape="rectangle">二.镂空描边矩形Paste_Image.pngandroid:shape="rectangle">详细属性说明solid: 设置填充的颜色,只有android:color一个属性android:color 填充的颜色... -
Android渐变色圆角矩形框
2018-01-11 14:24:26效果如图: 实现代码如下图所示: package com.example.demo.practice.ui; ...import android.content.Context;...import android.graphics.Canvas;...import android.graphics.LinearGradient;...imp -
Android shape 圆角 矩形框
2019-09-24 17:59:50<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> ...solid android:color="@android:color/transpa... -
Android实现空心圆角矩形按钮的实例代码
2020-08-31 17:22:58页面上有时会用到背景为空心圆角矩形的Button,可以通过xml绘制出来。这篇文章主要介绍了Android实现空心圆角矩形按钮的实例代码,需要的朋友参考下吧 -
Unity shader 实现圆角矩形
2022-01-20 14:02:36很多情况下我们需要给矩形的图片添加圆角,如果每次都让美术处理,又有些繁琐,所以我们今天就使用shader自己实现一个圆角矩形的功能,如下图所示 二.实现原理 把图片拆分成如上图所示的几个不同结构(1中间的一个... -
圆角矩形PCB板框规划
2020-11-23 12:07:22为避免矩形PCB的四角尖锐部分损伤或划伤,通常将PCB板设置为圆角矩形。 1、设置捕捉栅格 在PCB设计工作区按“G”键,设置鼠标的捕捉栅格为0.5mm,方便快速移动到恰当位置 2、分别在四个角放置圆弧 (1)先画好... -
用shape画一个圆角矩形框
2017-05-04 16:39:47... <!-- 内部颜色 --> ...-- 圆角的幅度 --> android:topLeftRadius="5dip" android:topRightRadius="5dip" android:bottomLeftRadius="5dip" android:bottomRightRadius="5dip" /> -
xml中设置圆角矩形框
2017-01-04 14:32:28设置圆角的矩形框可以在drawable中新建个xml文件: android:width="1px" android:color="#000000" > stroke:矩形框线条颜色宽度 corners:圆角,android:radius="2dp"表示圆角弧度 solid... -
css怎么画圆角矩形?
2021-06-12 01:56:21css怎么画圆角矩形?下面本篇文章就来给大家介绍一下使用css画圆角矩形的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。在CSS中,可以通过圆角边框border-radius属性来画圆角矩形。border...