我写了一个程序,创建一个六边形网格,一些黑色,一些白色。这是随机完成的。然后我随机选择一个六边形的子集,在其边缘放置红色钻石。该脚本旨在构建具有颗粒(六边形)和孔隙空间(菱形)的假装岩石微结构,用于材料建模。我正在使用fill()命令来创建每个形状。问题是,当我填写红色钻石时,它下面的六边形边缘仍然显示出来。我试图发布图片,但由于这是我第一次发帖,所以不会让我。如果有人想看,我可以通过电子邮件发送。
所以要创建黑色六边形:
h= fill(hexXY(i,j,1)+vx,hexXY(i,j,2)+vy,'k');
set(h,'edgecolor','k')
其中hexXY矩阵包含六边形中心的x和y坐标,它们添加到vx和vy数组中,给出六边形上每个点的顶点。然后我用钻石做同样的事情:
h=fill(hexXY(i,j,1)+dvx,hexXY(i,j,2)+dvy,'r');
set(h,'edgecolor','r')
但是,正如我所说,六边形的黑色边缘透过红色显示。我按顺序提供了顶点,就像你绘制它们一样,尽管我认为这不重要。我试过uistack和使用补丁,但都没有为我工作。我不能将六边形边缘颜色设置为无,因为我也有白色六边形,如果我将背景颜色设置为黑色,我会在白色六边形之间产生黑色线条。我删除了必须从黑色或白色六边形中删除边缘,因为在两个触摸的地方,边缘会产生混乱的像素化。
任何人都可以帮我弄清楚如何正确填充红色钻石吗?
编辑:我之前没有提到过,这只会在保存图片时出现。你无法在图窗口中看到它。我尝试使用print()和hgexport(),并更改渲染器,但无济于事。这是一个小例子,从我的代码中拉出数字来运行:hold on
v1=[0.3929 0.4107 0.3929 0.3571 0.3393 0.3571];
v2=[0.6907 0.6598 0.6288 0.6288 0.6598 0.6907];
h= fill(v1,v2,'k');
set(h,'edgecolor','k')
v3=[0.3750 0.3929 0.3750 0.3571 0.3750];
v4=[0.6366 0.6288 0.6211 0.6288 0.6366];
h=fill(v3,v4,'r');
set(h,'edgecolor','r')
set(gca,'position',[0 0 1 1],'units','normalized')
set(gcf,'PaperUnits','Inches','PaperPosition',[0 0 5 5]);
hgexport(gcf, 'test', hgexport('factorystyle'), 'Format', 'tiff','Resolution',600);
以下是使用hgexport
保存的图片:
答案 0 :(得分:1)
尝试使边缘透明:
set(h,'edgealpha',0)
奇怪的是导致原始问题。如果命令保持简单,一切看起来都很好:
h1= fill([1,2,3,3,2,1],[2,4,3,2,0,1],'m');
set(h1,'edgecolor','m')
hold on
h2= fill([2,3,2.5],[2,1,pi],'g');
set(h2,'edgecolor','g')
但是当前景三角形改变时,背景边缘向前移动。
set(h2,'edgealpha',0) % an example of what can cause the problem to appear.
我不知道是什么造成的。
答案 1 :(得分:1)
如果set(h,'edgealpha',0)
不起作用(按照 @ user1739107 的建议),您可以尝试set(h,'edgecolor','none')
。
在OSX R2012b上,两种解决方案都可以正常工作。