NSBezierPath绘制圆角矩形的圆角不够圆滑?

这篇具有很好参考价值的文章主要介绍了NSBezierPath绘制圆角矩形的圆角不够圆滑?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在Macos应用开发过程中,使用OC语言编码,效果是:圆角的线宽 比 边框的 大或者浓。

经过大量查询,发现:如果圆角矩形宽高和View的宽高一样大,就导致圆角矩形的边框线有一半在View外面而被裁剪。

调整后的代码如下:

- (void)drawRect:(NSRect)dirtyRect {
  const CGFloat cornerRadius = 8.0;
  const CGFloat lineWidth = 2.0;
  [[NSColor colorWithRed:(140.0/255.0) green:(171.0/255.0) blue:(239.0/255.0) alpha:1.0] setStroke];
  
  
  // 绘制圆角矩形 - 第1种方法。
  NSBezierPath *bezierPath = [NSBezierPath bezierPathWithRoundedRect:CGRectInset(dirtyRect, lineWidth/2, lineWidth/2) xRadius:cornerRadius yRadius:cornerRadius];
  [bezierPath setLineWidth:lineWidth];
  [bezierPath stroke];
  
  
  // // 绘制圆角矩形 - 第2种方法。
  // CGFloat top = CGRectGetMinY(dirtyRect) + lineWidth/2;
  // CGFloat bottom = CGRectGetMaxY(dirtyRect) - lineWidth/2;
  // CGFloat left = CGRectGetMinX(dirtyRect) + lineWidth/2;
  // CGFloat right = CGRectGetMaxX(dirtyRect) - lineWidth/2;
  // CGContextRef context = (CGContextRef)[[NSGraphicsContext currentContext] CGContext];
  // CGContextBeginPath(context);
  // CGContextMoveToPoint(context, left, top+cornerRadius);
  // CGContextAddArcToPoint(context, left, top, left+cornerRadius, top, cornerRadius);
  // CGContextAddArcToPoint(context, right, top, right, top+cornerRadius, cornerRadius);
  // CGContextAddArcToPoint(context, right, bottom, right-cornerRadius, bottom, cornerRadius);
  // CGContextAddArcToPoint(context, left, bottom, left, bottom-cornerRadius, cornerRadius);
  // CGContextSetLineWidth(context, lineWidth);
  // CGContextClosePath(context);
  // CGContextDrawPath(context, kCGPathStroke);
}

参考链接:

https://outofmemory.cn/web/1018338.html    

https://www.coder.work/article/2362973    。文章来源地址https://www.toymoban.com/news/detail-682877.html

到了这里,关于NSBezierPath绘制圆角矩形的圆角不够圆滑?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【零基础学web前端】CSS学习,字体属性,文本属性,背景属性,圆角矩形属性

    前言: 大家好,我是 良辰丫 ,在上一篇文章中我们了解了CSS引入方式,CSS基础选择器,CSS复合选择器,今天我们继续学习CSS的相关知识点.💞💞 🧑个人主页:良辰针不戳 📖所属专栏:零基础学web前端 🍎励志语句:生活也许会让我们遍体鳞伤,但最终这些伤口会成为我们一辈子的

    2024年02月05日
    浏览(44)
  • css 怎么绘制一个带圆角的渐变色的边框

    1,可以写两个样式最外面的div设置一个渐变的背景色。里面的元素使用纯色。但是宽高要比外面元素的小。可以利用里面的元素设置padding这样挡住部分渐变色。漏出来的渐变色就像边框一样。 div class=\\\"cover-wrapper\\\"    div class=\\\"item-cover\\\"    /div /div .cover-wrapper{      background:

    2024年01月19日
    浏览(32)
  • 绘制一个可以移动的矩形,当矩形碰到屏幕边界时,矩形都将会改变颜色

    参考资料:pygame学习(二)——绘制线条、圆、矩形等图案-CSDN博客

    2024年02月03日
    浏览(28)
  • OpenCV绘制矩形

    这是完整的代码:

    2024年02月09日
    浏览(28)
  • 【Filament】绘制矩形

    ​ Filament环境搭建中介绍了 Filament 的 Windows 和 Android 环境搭建,绘制三角形中介绍了绘制纯色和彩色三角形,本文将使用 Filament 绘制纯色和彩色矩形。 ​ 本文项目结构如下,完整代码资源 → Filament绘制矩形。 ​ 为方便读者将注意力聚焦在 Filament 的输入上,轻松配置复杂

    2024年03月09日
    浏览(31)
  • 学习Canvas基础-绘制矩形

    学习Canvas基础-绘制矩形 canvas提供了三个API,分别是: 1.绘制矩形 rect(起点X, 起点Y, 绘制的矩形width, 绘制的矩形height) 但该方法不会出实际效果,需要配合 fill()和stroke()方法让其显现。 2.绘制一个填充的矩形 fillRect(起点X, 起点Y, 绘制的矩形width, 绘制的矩形height) 3.绘制一

    2023年04月09日
    浏览(48)
  • 使用unity绘制扇形,圆形和矩形区域

    使用unity绘制扇形.圆形和矩形区域: 效果如图: 扇形  矩形  圆形  下面是代码: 1.首先我们需要给对应的组件添加一个LineRenderer组件并获得他 2.编写方法: 1.扇形 其中 positionCount 之所以需要+2 是因为除了我们需要的角度外 还需要额外绘制2条回归线所以直接通过代码的方式设置

    2024年02月15日
    浏览(39)
  • pygame学习(二)——绘制线条、圆、矩形等图案

    大家好!我是 码银 ,代码的 码 ,银子的 银 🥰 欢迎关注🥰: CSDN:码银 公众号:码银学编程 pygame是一个跨平台Python库(pygame news),专门用来开发游戏。pygame主要为开发、设计2D电子游戏而生,提供图像模块(image)、声音模块(mixer)、输入/输出(鼠标、键盘、显示屏)模

    2024年02月03日
    浏览(24)
  • 使用openCV python绘制实心旋转的矩形

    ​ 看方法直接看最下边 看方法直接看最下边 看方法直接看最下边 一、通过中心点、宽高、角度得到四个顶点的公式网上都有,最后输出四个顶点的x和y坐标。 二、绘制实心矩形 关于怎么绘制实心矩形,因为openCV本身的cv2.rectangle只能绘制角度为0的矩形,没办法用,所以一开

    2024年02月09日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包