我正在尝试加载一个 100x100 像素的正方形位图图像,以便其下边位于 (0,0)--(1,0) 段上。我使用命令
label(graphic("black","width=1cm"),(.5,.5));
结果是
当我将宽度改为 2cm 时,我得到了一个比单位正方形略小的正方形。
我浏览了所有可用的示例,但不知道我做错了什么。任何帮助都欢迎。只是补充一点。虽然 Tikz 文档的范围令人难以置信,但 Asymptote 的文档却采用了相反的方法。在我看来,这会让人们对这款出色的软件望而却步。
生成图像的代码是
import graph;
size(7cm,0);
settings.tex="pdflatex";
/* draw grid of horizontal/vertical lines */
void ddrawgrid(real xmin = -5, real xmax =5, real ymin = -5, real ymax = 5, real f=10) {
/* grid intervals */
pen gridpen = linewidth(0.7) + gray(.7);
real dx = 1., dy = 1.;
for(real i = ceil(xmin/dx)*dx; i <= floor(xmax/dx)*dx; i += dx)
draw((i,ymin)--(i,ymax), gridpen);
for(real i = ceil(ymin/dy)*dy; i <= floor(ymax/dy)*dy; i += dy)
draw((xmin,i)--(xmax,i), gridpen);
/* draws axes; NoZero hides '0' label */
Label laxis; laxis.p = fontsize(f);
xaxis(xmin, xmax, Ticks(laxis, Step = 1., Size = 2, NoZero),EndArrow(6), above = true);
yaxis(ymin, ymax, Ticks(laxis, Step = 1., Size = 2, NoZero),EndArrow(6), above = true);
}
int m=3,n=2;
fill(box((0,0), (m,n)), paleyellow);
ddrawgrid(xmax=m, xmin=0, ymax=n, ymin=0);
label(graphic("black","width=1cm"),(.5,.5));
答案1
需要了解的主要一点是标签不会通过size
和unitsize
命令缩放。 例如,我修改了下面的代码,以显示 7 厘米的标签与您绘制的网格的宽度相同。
import graph;
size(7cm,0);
settings.tex="pdflatex";
/* draw grid of horizontal/vertical lines */
void ddrawgrid(real xmin = -5, real xmax =5, real ymin = -5, real ymax = 5, real f=10) {
/* grid intervals */
pen gridpen = linewidth(0.7) + gray(.7);
real dx = 1., dy = 1.;
for(real i = ceil(xmin/dx)*dx; i <= floor(xmax/dx)*dx; i += dx)
draw((i,ymin)--(i,ymax), gridpen);
for(real i = ceil(ymin/dy)*dy; i <= floor(ymax/dy)*dy; i += dy)
draw((xmin,i)--(xmax,i), gridpen);
/* draws axes; NoZero hides '0' label */
Label laxis; laxis.p = fontsize(f);
xaxis(xmin, xmax, Ticks(laxis, Step = 1., Size = 2, NoZero),EndArrow(6), above = true);
yaxis(ymin, ymax, Ticks(laxis, Step = 1., Size = 2, NoZero),EndArrow(6), above = true);
}
label(graphic("black","width=7cm"),(0,0),NE);
layer();
int m=3,n=2;
ddrawgrid(xmax=m, xmin=0, ymax=n, ymin=0);
您的size(7cm,0);
命令表示整个输出应为 7 厘米宽。因此,当您绘制宽度为 1 厘米的“黑色”标签时,它将约为网格宽度的 1/7。
您可能想研究如何使用unitsize();
命令。此命令充当比例因子,这样unitsize(3cm);
命令将导致您的每条网格线相距 3 厘米。由于标签不会通过“unitsize”命令缩放,因此您必须定义"width=3cm"
“黑色”标签以使其填充您的一个网格方块。
unitsize(3cm);
settings.tex="pdflatex";
label(graphic("black","width=3cm"),(.5,.5));
layer();
label(graphic("black","width=1.5cm"),(1.5,1.5));
layer();
draw(unitsquare, red);
draw(shift(1,0)*unitsquare, red);
draw(shift(0,1)*unitsquare, red);
draw(shift(1,1)*unitsquare, red);