我有一个控件,我必须做大量修改.当我这样做时,我想完全阻止它重绘 - SuspendLayout和ResumeLayout是不够的.如何为控件及其子项暂停绘画?
我刚刚在过去几天看到这一点,无法弄清楚它是如何工作的.我谈到的视频在这里:
这是Stack Overflow问题的最高评价答案:为什么这个程序被三个编译器拒绝了?
这个位图如何能够显示"Hello World"的C++程序?
我想画一个文字到油漆.如何用自定义字体(前Helvetica)和粗体绘制它?我宁愿使用系统字体而不是从资产创建它.谢谢.
我想要一个带有粗体文本的位图图标在地图上绘制它.我有一个片段在图像上写文字:
Bitmap icon = BitmapFactory.decodeResource(PropertyMapList.this.getResources(),
R.drawable.location_mark);
TextPaint paint = new TextPaint();
paint.setColor(Color.BLACK);
paint.setTextSize(14);
paint.setFakeBoldText(true);
//paint.setTextAlign(Align.CENTER);
Bitmap copy = icon.copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(copy);
//canvas.drawText(jsonObj.getString("district_name"), 5, canvas.getHeight()/2, paint);
String districtName = jsonObj.getString("district_name");
StaticLayout layout = new StaticLayout((districtName.length()>25 ? districtName.substring(0, 24)+"..":districtName)+"\n"+jsonObj.getString("total_properties"), paint, canvas.getWidth()-10,Layout.Alignment.ALIGN_CENTER, 1.3f, 0, false);
canvas.translate(5, canvas.getHeight()/2); //position the text
layout.draw(canvas);
Run Code Online (Sandbox Code Playgroud)
setFakeBoldText(true)
不适合我.我希望Bitmap上绘制的文本加粗.
是否已有指令在画布上绘制/绘制内容?所以你可以实现像Paint这样的东西甚至像Photoshop等更大的东西,但是一个非常基本的例子就足够了.
我没有在我的搜索中找到一个,如果已经有一个被认为是最佳实践,我想使用它.否则我必须自己实施一个.
Android中是否有任何方法可以绘制带有黑色边框的填充矩形.我的问题是canvas.draw()接受一个绘制对象,据我所知,绘制对象不能有填充和描边的不同颜色.有没有解决的办法?
我正在创建路径并使用path.moveTo(x, y)
和在每个路径中添加多行path.lineTo(x, y)
.然后canvas.drawPath(path, paint)
绘制所有路径.但是在某些路径中,行之间有1-2个像素空间.我怎样才能删除这些空格?我的代码是这样的:
paint = new Paint();
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setDither(false);
paint.setStrokeWidth(3);
paint.setAntiAlias(true);
for (int i = 0; i < length; i++) {
Path path = new Path();
path.moveTo(a, b);
path.lineTo(c, d);
path.moveTo(c, d);
path.lineTo(e, f);
canvas.drawPath(path, paint);
}
Run Code Online (Sandbox Code Playgroud) 我为我的应用程序开发了一个自定义视图组件,我正在努力为圆圈添加阴影.
这是我的类扩展View的代码
public class ChartView extends View {
public ChartView(Context context, AttributeSet attributeSet){
super(context, attributeSet);
init();
}
Paint paint;
public void init(){
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.WHITE);
paint.setStyle(Paint.Style.FILL);
paint.setShadowLayer(30, 0, 0, Color.RED);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawCircle(getWidth()/2, getHeight()/2,50, paint);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我注意到,取决于API,对shadowLayer有很大影响.
这是输出
<uses-sdk android:targetSdkVersion="13"/>
Run Code Online (Sandbox Code Playgroud)
这是输出
<uses-sdk android:targetSdkVersion="14"/> //Higher target API yields the same output.
Run Code Online (Sandbox Code Playgroud)
知道如何克服这种不必要的行为吗?
最好的祝福
我正在尝试使用画布创建绘图区域.我在绘制曲线时让线条看起来很光滑时遇到了麻烦,而且我的算法中的线条粗细也有变化,看起来很糟糕,因为尺寸跳跃也很多,你可以看到尺寸变化的地方.我确实在stackoverflow上找到了这个链接,但这是一个原生的iPhone应用程序,我无法搞清楚.
这是我目前的JS代码.这是在jsFiddle上运行的
var xStart,
xEnd,
yStart,
yEnd,
paint,
ctx;
$(document).ready(function (){
ctx = $('canvas')[0].getContext("2d");
ctx.strokeStyle = '#000';
ctx.lineJoin="round";
ctx.lineCap="round";
ctx.lineWidth = 1;
$('canvas').bind('mousedown mousemove mouseup mouseleave touchstart touchmove touchend', function(e){
var orig = e.originalEvent;
if(e.type == 'mousedown'){
e.preventDefault(); e.stopPropagation();
xStart = e.clientX - $(this).offset().left;
yStart = e.clientY - $(this).offset().top;
xEnd = xStart;
yEnd = yStart;
paint = true;
draw(e.type);
}else if(e.type == 'mousemove'){
if(paint==true){
xEnd = e.clientX - $(this).offset().left;
yEnd = e.clientY - $(this).offset().top; …
Run Code Online (Sandbox Code Playgroud) 鉴于此代码绘制一条线:
Paint p;
p = new Paint(Paint.ANTI_ALIAS_FLAG);
p.setColor(android.graphics.Color.WHITE);
p.setStyle(Paint.Style.FILL);
p.setStrokeWidth(21);
canvas.drawLine(0,50,100,50,p);
Run Code Online (Sandbox Code Playgroud)
有3种可能的描笔策略:
在实践中,似乎默认行为遵循中心策略.是否可以修改油漆以产生与其他策略相对应的结果?