Java画十字_用Java绘制对角线

我有以下代码:

private _x,_y,_w,_h;

protected void paintComponent( Graphics g_ ) {

g_.setStroke( new BasicStroke(2) );

g_.drawLine(_x, _y, _x+_w, _y+_h);

g_.drawLine(_x, _y+_h, _x+_w, _y);

}

在我的情况下,我正在画一个正方形的对角线,所以:_w == _ h.

我的问题是两条线没有相同的明显特征:第一条线看起来比第二条线厚.检查这里绘制的实际像素时,渲染的差异如下:

我真的不在乎哪一个应该被认为是“正确的”(虽然我想了解这个结果的原因),但我想在这里有一些连贯性,两条线都有相同的渲染:我该怎么办那?

(当我使用1px笔划时,两条线之间没有区别).

Olavi’s ansewer的后续行动:

使用奇数个像素进行描边并不能解决问题:

启用消除锯齿导致另一个问题:绘制十字的正方形的笔划变得模糊:

解决方法:

基本上你有两个选择:

>使用奇数厚度

>使用抗锯齿

我个人更喜欢抗锯齿,因为它很漂亮,我喜欢漂亮的东西.然而,要解释为什么2的笔划宽度表现得如此:Java不知道是否以第一种方式或第二种方式绘制线条(我无法确切地解释它为什么会这样做,但这是什么我知道了).为了进一步详细说明这个答案,尝试向左或向右开始另一行一个像素:这应该导致两条线具有相同的厚度.

要使用抗锯齿,请执行以下操作(未经测试的代码!).代码从here开始:

Graphics2D graphics2D = (Graphics2D) g_;

graphics2D.setRenderingHint(

RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

graphics2D.drawLine(_x, _y, _x+_w, _y+_h);

graphics2D.drawLine(_x, _y+_h, _x+_w, _y);

标签:java,swing,line,drawing,stroke

来源: https://codeday.me/bug/20190830/1767758.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值