这是一个简化的描述:想象一下,我给了一个View类,它绘制了一张墙的图片,我想用一个切出的窗口绘制它.假设我扩展了View类并覆盖其dispatchDraw()方法以执行以下操作.首先绘制背景,如果有任何要通过窗口看到.接下来我想以某种方式屏蔽矩形窗口区域,然后调用super.dispatchDraw().最后,我想取下面具并画一个站在窗户上的人,这样他们就会在背景和墙壁上画画.我怎样才能做到这一点?
以下是一些看起来与我需要的代码相近的代码:
@Override
protected void dispatchDraw(Canvas into) {
int w = into.getWidth();
int h = into.getHeight();
int w3 = w / 3;
int h3 = h / 3;
into.drawLine(0, 0, w, h, mPaint);
Region protect = new Region(w / 3, h / 3, 2 * w / 3, 2 * h / 3);
into.clipRegion(protect, Op.INTERSECT);
into.drawColor(Color.MAGENTA); // or super.dispatchDraw() here.
}
Run Code Online (Sandbox Code Playgroud)
这给了我这个:

这与我想要的完全相反.请注意上面代码中名为"protect"的区域.我希望洋红色填充发生在除了该区域之外的任何地方.具体来说,我想看到的是:

在窗口的类比中,我应该能够移除限制并以正常方式绘制一个人或某物,这与窗户和墙壁重叠.
编辑:这是Rajesh CP答案的简化工作版本.我还在末尾的所有内容上添加了一个红色的"前景"条纹,以表明我可以删除限制并添加它们.谢谢Rajesh!
public class MaskTest extends Activity {
@Override
protected void onCreate(Bundle …Run Code Online (Sandbox Code Playgroud) 电梯视图中每行都有一个用户图标.我想要一个圆角.这是我拥有的,它什么都不做:
<ImageView
android:background="@drawable/profile_widget_selector"
android:id="@+id/ivTopUserPP"
android:layout_width="65dp"
android:layout_height="65dp"
android:baselineAlignBottom="@drawable/profile_pic_shape"
android:src="@drawable/usericon" />
Run Code Online (Sandbox Code Playgroud)
profile_pic_shape.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#bbbbbb" />
<stroke
android:width="1dp"
android:color="#bbb" />
<padding
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
<corners android:topLeftRadius="40dp" />
</shape>
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用WPF创建自定义形状.对于初学者我只是想创建一个简单的线,每端都有一个圆圈(我知道有LineCaps,但这不是我想要的).
我已经研究了一些教程和最简单的方法,似乎使用了一个CombinedGeometry.但是我无法让它正常工作.这是我创建几何对象的代码:
protected override Geometry DefiningGeometry
{
get
{
Point ellipseCenter1 = new Point(X1 - this.CapDiameter / 2, Y1 - this.CapDiameter / 2);
Point ellipseCenter2 = new Point(X2 - this.CapDiameter / 2, Y2 - this.CapDiameter / 2);
var ellipse1 = new EllipseGeometry(ellipseCenter1, CapDiameter, CapDiameter);
var ellipse2 = new EllipseGeometry(ellipseCenter2, CapDiameter, CapDiameter);
var line = new LineGeometry(this.StartPoint, this.EndPoint);
var combined1 = new CombinedGeometry(GeometryCombineMode.Union, ellipse1, line);
var combined2 = new CombinedGeometry(GeometryCombineMode.Union, combined1, ellipse2);
// Freeze the geometry for performance benefits …Run Code Online (Sandbox Code Playgroud) 我已经定义了对3xN NumPy数组的操作,我想遍历数组的每一列。
我试过:
for i in range(nparray.shape[1]):
Run Code Online (Sandbox Code Playgroud)
但是,如果nparray.ndim == 1,则失败。
有没有一种干净的方法来确定NumPy数组的列数,例如,1确定它是否是一个1D数组(就像 MATLAB 的size操作那样)?
否则,我已经实施了:
if nparray.ndim == 1:
num_points = 1
else:
num_points = nparray.shape[1]
for i in range(num_points):
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 css 中创建一个右侧笔直的平行四边形,但到目前为止我正在努力实现这一目标。
我正在使用 css ...
-webkit-transform: skew(-18deg);
-moz-transform: skew(-18deg);
-o-transform: skew(-18deg);
Run Code Online (Sandbox Code Playgroud)
...“倾斜”矩形以创建平行四边形。
我想知道是否可以将右侧弄直?
它是否需要 :before 和 :after 在 css 中?
任何这方面的帮助都会很棒。
谢谢,
菲尔
我有一个css箭头框覆盖图像滑块,但我需要使尾部缩进和透明,以便在其后面看到图像.需要白色部分是透明的.请参阅下面的附图和我的css.谢谢.
#flag {
width: 400px; height: 80px; background: #231f20; position: relative;
}
#flag:before {
content: "";
position: absolute;
top: 0;
width: 0;
height: 0;
border-top: 40px solid transparent;
border-bottom: 40px solid transparent;
border-left: 35px solid white;
}
#flag:after {
content: "";
position: absolute;
left: 400px;
bottom: 0;
width: 0;
height: 0;
border-top: 40px solid transparent;
border-bottom: 40px solid transparent;
border-left: 45px solid #231f20;
}
Run Code Online (Sandbox Code Playgroud) 我正在为RelativeLayout的背景制作一个矩形,并想知道如何使该矩形的圆角边缘之外的区域也变为darker_grey.目前,只有这个矩形的内部是darker_grey
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<solid android:color="@android:color/darker_gray" />
<stroke android:width="1dip" android:color="@android:color/black"/>
<corners android:radius="20dp" />
</shape>
Run Code Online (Sandbox Code Playgroud) 嘿,我正在尝试集成Box2D和SFML,我的类接受一个Body指针,我需要使用它来获取一个fixture的所有点,这样我就可以形成一个身体的图形表示.
我如何得到这些积分?
这里的问题是在onDraw方法中绘制这种形状.
我已经尝试使用Path和CornerPathEffect,但底角必须是尖锐的,所以它是不工作的解决方案.

我想绘制一个等边三角形.我已经检查但它是倒置的.我想要一个看起来像下图的三角形.
triangle_shape.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<rotate
android:fromDegrees="45"
android:toDegrees="45"
android:pivotX="-40%"
android:pivotY="87%" >
<shape
android:shape="rectangle" >
<stroke android:color="#fff" android:width="1dp"/>
<solid
android:color="#000" />
</shape>
</rotate>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
目前它看起来像..