众所周知,绘制一条雕刻线后,有些像素具有半透明的颜色,如下所示。
我不知道该怎么称呼这种现象,可能是由“混合模式”或“预乘Alpha”引起的,我想知道如何忽略这些非固态像素,谢谢。 我的绘画代码:
guard let ctx = UIGraphicsGetCurrentContext() else { return }
ctx.addPath(path)
ctx.setLineCap(.round)
ctx.setLineWidth(lineWidth)
ctx.setStrokeColor(lineColor.cgColor)
ctx.setBlendMode(.normal)
ctx.setAlpha(lineAlpha)
ctx.strokePath()
我有一个解决方案,即从ctx生成图像,然后将半透明像素更改为实心像素,然后将图像绘制回ctx。这是有道理的,但是它存在性能问题,那么在画线时我们有办法解决它吗?谢谢。
答案 0 :(得分:1)
这称为“抗锯齿”。在进行绘制之前,请先使用CGContext.setShouldAntialias(_:)
将其关闭,如下所示:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
txtDate.Text = DateTime.Now.ToString("dd/MM/yyyy");
setDetails();
}
}
protected void setDetails()
{
lblCaption.Text = string.Format("{0}", DateTime.Parse(txtDate.Text).ToString("MMM/yyyy"));
}
protected void DateChanged(object sender, EventArgs e)
{
//setDetails();
}
public string[] GetData()
{
string[] data = new string[5];
data[0] = "title: 'All Day Event 2',start: new Date(y, m, 1)";
data[1] = @"title: 'Meeting all day',start: new Date(y, m, 2),allDay: true,url: 'http://www.google.com/'";
data[2] = @"title: 'Meeting all day - 1',start: new Date(y, m, d - 5),allDay: true,url: 'http://www.google.com/'";
data[3] = @"title: 'Birthday Party',start: new Date(y, m, d - 3, 12, 0),end: new Date(y, m, d - 3, 16, 0),allDay: false";
data[4] = @"title: 'Click for Google 112233',start: new Date(y, m, 28),end: new Date(y, m, 9),url: 'http://google.com/' ";
return data;
}