为什么这个 clipTo 方法在最新的 fabricjs 版本上不起作用,你可以调整对象容器和其中的图像的大小。您还可以移动容器对象和图像对象。
var imgInstance = new fabric.Image(img, {
width: instanceWidth,
height: instanceHeight,
top: (canvas.getHeight() / 2 - instanceHeight / 2),
left: (canvas.getWidth() / 2 - instanceWidth / 2),
originX: 'left',
originY: 'top'
});
canvas.add(imgInstance);
imgInstance.clipTo = function(ctx) {
/* image clipping method doesn't work on latest fabricjs version*/
ctx.save();
ctx.setTransform(1, 0, 0, 1, 0, 0);
clippingRect.render(ctx);
ctx.restore();
};
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/efmbrm4v/2/
或者是他们的另一种方法里面的形状对象是图像对象。
boolean_mask 的文档说必须静态知道掩码的形状。但是如果你这样做
mask.set_shape([None])
tf.boolean_mask(tensor, mask)
Run Code Online (Sandbox Code Playgroud)
它似乎工作正常。有什么理由不这样做吗?
我想要一个四分之一圆形的容器,想想整个披萨的四分之一片。
我如何实现这一目标?基本上我想把它放在右下角的另一个容器的顶部,圆形部分朝内,当然角度匹配底部容器的右下角,使用堆栈小部件。
谢谢。
我是使用HTML5 Canvas和KineticJS的新手,所以请原谅我,如果这是我的一个明显的错误.
我的问题是我正在使用由形状组成的组.形状使用drawFunc来完成绘制魔术.所有好东西.但是 - 我注意到我的Shape调用中的设置似乎覆盖了"全局"上下文设置.这是我创建的小提琴最好的显示,它为标准的"KineticJS拖放组" 演示添加了一些十字架(形状).
// ----------------------------------------------------------[ my bit starts ]
var tmp_x = i * 30 + 100
var tmp_y = i * 30 + 40
var shape = new Kinetic.Shape({
drawFunc: function(context) {
context.moveTo(tmp_x-10, tmp_y);
context.lineTo(tmp_x + 10, tmp_y);
context.moveTo(tmp_x, tmp_y - 10);
context.lineTo(tmp_x, tmp_y + 10);
this.fill(context);
this.stroke(context);
} ,
fill: "#0FD2FF",
stroke: "orange"
});
group.add(shape);
// ----------------------------------------------------------[ my bit ends ]
var box = new Kinetic.Rect({
x: i * 30 + 210, …Run Code Online (Sandbox Code Playgroud) 我正在制作游戏Master Mind,我已经用JButton填充了我的矩阵,所以人们可以点击它们来改变颜色.
现在我想将矩形按钮的形状更改为圆形,是否有一种方法可以一次更改它们,因为我使用循环来创建它们.
我在正常状态下有一个3d查看按钮,右侧和底部都有3dp填充,当我按下按钮时,我想让它看起来像这里左边和顶部的3dp填充.但是当我更改项目形状的按下状态的填充值时,即使按钮处于正常状态/未按下,填充中的更改也会显示.
我的按钮看起来像这样:

按下时我也希望它看起来像这样:

btn_gray1.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<solid
android:color="#acacac" />
<stroke
android:width="0dp"
android:color="#acacac" />
<corners
android:radius="0dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<solid android:color="#c2c2c2"/>
<stroke
android:width="0dp"
android:color="#c2c2c2" />
<corners
android:radius="0dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
btn_gray2.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<solid
android:color="#acacac" />
<stroke
android:width="0dp"
android:color="#acacac" />
<corners
android:radius="0dp" />
<padding
android:left="0dp"
android:top="0dp"
android:right="3dp"
android:bottom="3dp" />
</shape>
</item>
<item> …Run Code Online (Sandbox Code Playgroud) 好吧,我需要裁剪特定形状的ImageView,我不能通过添加png来实现这一点,因为背景可以变化(例如模式).所以,我需要形状外的区域是透明的.
形状必须是这样的:

我想用Path()来绘制这个形状并使用它来掩盖ImageView,但我完全不知道如何使用Path()绘制这样的复杂形状.
非常感谢.
我正在尝试使用Matlab创建这些3D形状以用于说明目的(请参见下图).我认为冲浪是我应该使用的功能; 但是,我还没有弄清楚我应该用什么函数来表示这些形状.有人可以提出一个例子吗?谢谢.

一个.
编辑1:
感谢Trogdor和PetrH的回复.
目前,我正在尝试绘制更锐利的形状.例如,z = x.^ 2 + y.^ 2; 可以绘制正常的杯形.但是,我想绘制如右下图所示的子图.尝试了几个不同的功能,但没有工作.谢谢你的任何提示!

编辑2:
使用z = x.^ 2 -4*x + y.^ 2-4*y; 可以使形状更平坦.仍然没有办法让它变得尖锐.

我需要在xml中为android项目描述以下形状.我知道有一个圆角的回转,但我怎么能实现那个矩形只有一个角落,其余的圆角?

这不会像人们在很多问题中提到的那样被用作文本语音泡沫.我只想将形状用作一行文本的背景.形状颜色应该易于动态变换.
谢谢你的帮助.
我最近一直在做一些图像处理,我正在寻找一种算法来确定完全在非规则形状内的最长线段.换句话说,线段应该是在其端点处难以接触形状的最长线段.
形状可以表示为一组(x,y)坐标或二进制数组.最外层的像素(边缘)已经确定.一个简单的例子是椭圆,解决方案是主轴.更复杂的例子是等边三角形,这将导致两个像素之间的线与两个单独的角紧邻.我的大多数形状都是椭圆形或"蠕虫状"(长而波浪状).
最后,我希望将此作为一种方法,将"蠕虫状"形状划分为它们的片段,使用一系列大致垂直于此线的"切割".我希望这条消息形成的线条比回归确定的线条更适合这项任务.应该注意的是,这些形状是高分辨率的,因此可能包含多达1000个边缘像素,这就是为什么我试图避免简单的迭代/强力方法.
谢谢你的任何建议!
以下是一些可视化:

geometry image-processing shape computer-vision computational-geometry