覆盖ComboBox的DrawItem
我更改了各种控件的亮点,我计划做出更多更改.因此,我最好创建自己的控件并重复使用它们,而不是为每个人更改. 我创建了一个新的用户控件,并从System.Windows.Forms.ComboBox继承. 问题是我找不到像onClick一样覆盖onDraw的方法. 那么我将如何覆盖它?这是我用于每个控件onDraw事件的代码 public void comboMasterUsers_DrawItem(object sender, DrawItemEventArgs e) { e.DrawBackground(); Graphics g = e.Graphics; Brush brush = ((e.State & DrawItemState.Selected) == DrawItemState.Selected) ? Brushes.LightSeaGreen : new
6 2024-04-14
编程技术问答社区
安卓-触摸擦除前台ImageView的部分内容以暴露背景视图
所以我一直在为此挣扎.假设我有一个自定义图像视图,我想覆盖背景视图(均在Relativelayout中),当触摸时,它会像MS Paint中的擦除工具一样擦除视图的部分源位图,以公开其下面的视图.我已经检查了几乎所有的线程(例如 A>)建议在油漆对象中使用Porterduff SRC模式,并将canvas耗尽源位图的argb_8888阴影副本以应用掩蔽. 另外,我无法提前设置覆盖层的来源,因为我必须通过网络下载它,以便映像视图的刻度类型为我照顾缩放. 每当我覆盖on时,当我在iv的位图上应用擦除时,即使我设定了透明的背景,它也会揭示黑色背景而不是下面的视图.因此,我在最后的绳索上,要揭露背景视图. 这是我到目前为止所拥有的: 查看构造函数: paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); paint.setColor(Color.TRANSPARENT);
18 2024-03-31
编程技术问答社区
从onDraw()向创建的位图绘图。
我正在尝试绘制一个位图,以便我可以将自定义视图放入ImageView. public void onDraw(Canvas canvas) { Bitmap drawGraph = Bitmap.createBitmap(canvas.getWidth(),canvas.getHeight(),Bitmap.Config.ARGB_8888); canvas.setBitmap(drawGraph); canvas.drawBitmap(drawGraph, 0, 0, bgPaint); 我的问题是,如果我尝试以这种方式使用位图,我只会得到一个黑屏.我知道,如果我不尝试绘制位图,我的其余代码都可以像显示的那样可以. 如果我发表评论 canvas.setBitmap(drawGraph); 那么一切都很好,所以这是问题,但我不知道为什么. 我要去哪里? 解决方案 事实证明,我确实必须创建
10 2024-03-31
编程技术问答社区
PorterduffXfermode。清除一个位图的一个部分
目标是在某物的顶部绘制一个位图,并绘制擦除位图的基础区域的形状. 我有一个概念证明,可以尝试理解我应该如何解决这个问题.我发现了许多有关使用的提示: android.graphics.PorterDuff.Mode.CLEAR 下面的代码创建带有蓝色背景的屏幕并添加自定义视图.此视图从底部到顶部都借鉴了它的画布:粉红色的背景,一个带有轻微插图的位图,以显示粉红色的背景,每个porterduffxfermode的黄色圆圈. import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint;
6 2024-03-31
编程技术问答社区
Android中的视图占据了整个屏幕--如何告诉画布尊重视图的限制?
编辑: 好吧,所以我已经将Lenght和视图宽度扩展到了屏幕的大部分,我可以假设OnDraw()方法不采用视图的限制,因为它贯穿所有屏幕我可以想象.因此,现在的问题将是如何告诉画布尊重视图的限制?有什么想法,也许迫使某些参数? 编辑结束 我已经实施了一些用于绘制自定义视图的代码,但是画布为空白.我确定它正在运行,因为我已经添加了日志迹线,而且这些显示正常. 如何正确实现自定义视图的图形,以及我在下面做的事情有什么问题? 我的自定义视图在这样的布局内部:
10 2024-02-26
编程技术问答社区
如何制作梯度动画?
如何从颜色#1到颜色#2进行动画梯度?类似于 的东西 我打算将其用作单位的健康棒(因此,它将以绿色开头,以红色结尾) 解决方案 在搜索搜索时,我找到了2种为Android做的方法:使用ShaderFactory 或使用new Shader(new LinearGradient())扩展视图.两个答案都相同 - 调用new Shader()每个View.onDraw(Canvas canvas)方法的调用.如果此类动画梯度数量超过3. ,它真的很昂贵. 所以我以另一种方式做到了.我避免使用单个预定的LinearGradient来调用new每个onDraw().就是这样(gif,动画衰减): 诀窍是创建LinearGradient,它比View.getWidth()大.之后,您可以在绘制梯度时使用canvas.translate()更改其颜色,因此根本没有new new onDraw()中的调用. 要创建梯度,您需要当前宽度和高度.我在onSizeChan
20 2024-02-26
编程技术问答社区
在图库视图(和它的子视图)的顶部自定义绘图。
我正在尝试在画廊的顶部绘制自定义UI(在这种情况下的路径).我已经扩展了基础画廊类,并覆盖了这样的抽奖方法: public class MyGallery extends Gallery { ... @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawPath(mPath, mPaint); } 我认为将我的路径绘制在super.onDraw之后>确保将路径绘制在画廊的顶部及其孩子的视野,而是将孩子的视图放在我的路上. 有人知道如何正确绘制它吗? (我知道我可以包含一个相关性,并在这样的方式上绘制我的路径的进一步视图,但我宁愿将其全部保留在一个类中) ) 解决方案 我在询问后直接发现了这一点,因此,以防有人有同样的问题,因此决定发帖.要在画廊中汲取儿童视图,请覆盖dispatchDraw而不是onDraw @Override prot
26 2024-02-14
编程技术问答社区
在安卓系统的片段中作画
我有以下代码: import android.app.Fragment; import android.graphics.Rect; import android.graphics.Typeface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.animation.AlphaAnimation; import android.widget.TextView; public class MainFragment extends Fragment { protected AlphaAnimation fadeIn = new AlphaAnimation(0.0f , 1.0f ); public MainFragment(){} publi
34 2024-02-14
编程技术问答社区
如何在安卓系统中把编辑文本画到画布上?
我想画 EditText username = new EditText(context); 到我的画布上的特定位置 protected void onDraw(Canvas canvas) { } 是否可以根据我的Java文件中的x,y坐标绘制它,而无需使用XML布局? 解决方案 是的,您可以在Canvas上绘制EditText,这是提示: EditText ed; . . . . . ed.setDrawingCacheEnabled(true); Bitmap b = ed.getDrawingCache(); canvas.drawBitmap(bitmap, l, t, r, b, null); 您可以在这样的运行时间创建/初始化EditText: EditText editText = new EditText(this); editText.setText("My Text"); editText.setWidth(180
14 2024-02-14
编程技术问答社区
安卓,如何在edittext中画虚线
我参考了此链接:在Android?中制作一条虚线/虚线,并使用DashPathEffect.但这对我不起作用吗?为什么?我的代码: public class NoteEditText extends EditText { private Paint mPaint; public NoteEditText(Context context) { super(context); } public NoteEditText(Context context, AttributeSet attrs) { super(context, attrs); mPaint = new Paint(); mPaint.setStrokeWidth(1); mPaint.setStyle(Paint.Style.FILL_AND_STROKE); mPaint.setColor
38 2024-02-14
编程技术问答社区
用于控制音量的自定义旋钮视图?
我想在旋钮周围展示进度栏.遵循本教程后,我创建了此 旋钮正常工作. 但是,我如何修改上述旋钮看起来像第二张映像 在下面写入第一个旋钮的运行代码. import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.RectF; import android.view.GestureDetector; import android.view.GestureDetector.OnGestureListener; import android.view
16 2024-02-13
编程技术问答社区
安卓。在圆内画弧
我正在尝试在圆圈内绘制弧度以表示温度,但是我很难实现这一温度.在搜索过程中,我找到了这些解决方案 我不明白这是什么是刻度的方法,并且正在绘制多个拱使我有点困惑 这篇文章给了它固定的尺寸,我需要我由我的XML布局中的自定义视图控制的大小 我从这里了解了这个概念学位,但我不明白如何确定椭圆形大小 到目前为止我到达的东西 @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); int startTop = 0; int startLeft = 0; int endBottom = getHeight() / 2; int endRight = endBottom;// This makes an equal square. int centerX = getWidth() / 2; int centerY = getHe
18 2024-02-13
编程技术问答社区
将drawCircle()的x、y坐标传递给drawLine()。
我试图在两个圆圈之间划线.我在画布上画了两个圆圈,这两个圆圈具有CX和CY点. 我想将两个圆圈的CX和CY传递到drawline()的startx,starty and stopx,stopy.因此,应在这两个圆之间绘制一条线.这两个圆圈可以彼此平行或彼此水平.到目前为止,我已经计划的是,我应该将行动列表应用于圈子,以便获得X和Y坐标.我在这里面临的问题是 drawcircle()方法呼叫在 ondraw() and and linedraw()方法呼叫in 中ontouch().我在下面分享了我的代码,请建议解决方案,以便我可以通过Circle的坐标来drawline(). package com.example.circleline; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color
16 2024-02-13
编程技术问答社区
画布OnDraw方法
我目前正在使用一对布尔数组(水平和垂直)创建迷宫,以便为迷宫绘制线条. 迷宫一次仅显示一个阵列中的5个布尔.然后,我有一个总是以中心为中心的用户,当他在迷宫中移动时,绘制了下一组布尔.这正常工作. 我遇到的问题是:当用户移动到迷宫的某个部分时,绘制线的绘制线将变得高于bool数组,从而使应用程序崩溃.请在下面找到一些代码片段. on Draw: protected void onDraw(Canvas canvas) { canvas.drawRect(0, 0, width, height, background); int currentX = maze.getCurrentX(),currentY = maze.getCurrentY(); int drawSizeX = 6 + currentX; int drawSizeY = 6 + currentY; currentX = currentX - 2; c
26 2024-02-13
编程技术问答社区
从旧画布上画画-安卓
我正在制作一个需要能够在最后一组上绘制新图形的应用程序. 这是我当前的OnDraw()方法 - protected void onDraw(Canvas canvas) { canvas.drawColor(Color.WHITE); if(points.size() > 0) { //do some stuff here - this is all working ok canvas.drawLine(p1.x, p1.y, p2.x, p2.y, linePaint); } } 基本上,我需要将新图形绘制为最后一个图层,因此我要寻找的是将最后一张画布的图像运送到当前的方法. 我试图使用canvas.setbitmap()方法自己弄清楚它,但是它的作用很有趣. 任何帮助:) p.s如果需要,该类将扩展SurfaceView并实现SurfaceHolder.Callback 编辑:这
14 2024-02-13
编程技术问答社区
自定义视图Canvas onDraw()没有画出任何东西
我正在尝试使用画布绘制椭圆形,但它永远不会被绘制. 这是我的自定义视图代码.我还使用了setWillNotDraw(false)仍然没有在屏幕上绘制. public class Myview extends View { Paint paint; RectF rect; public Myview(Context context) { super(context); init(); setWillNotDraw(false); } public Myview(Context context, AttributeSet attrs) { super(context, attrs); init(); setWillNotDraw(false); } public Myview(Context context, AttributeSe
14 2024-02-13
编程技术问答社区
重新创建一个对象而不删除上一个对象
我正在创建一个允许用户在屏幕上绘制的应用程序.我的代码实际上创建了一条路径,接下来会创建一条线.但是,当用户握住屏幕的手指并转到屏幕的另一部分时,它会像下一个视频中一样. http://youtu.be/cbv1wtuc2g4 以下代码是drawview的代码. public class DrawView extends View implements OnTouchListener { private static final String TAG = "DrawView"; List points = new ArrayList(); Paint paint = new Paint(); int action; int draw=0; Boolean finger=true; public DrawView(Context context) { super(context); setFocusable(true);
12 2024-02-13
编程技术问答社区
在onDraw()中保存Canvas。
我试图将画布对象保存在ondraw()方法中. 这是因为我在on Drawd方法中使用了一个foreach循环,因此: canvas.drawText(textItem,x,y,textpaint); (我必须这样做,因为我在蒙版区域绘制文本) 我现在正在尝试的是: @Override public void onDraw(Canvas canvas) { if (hasrun = false) { for(CustomTextViewDrawItem item : drawItemList) { canvas.drawText(item.Text, item.X, item.Y, textPaint); } if (eLabel.backgroundGradient != null) {
10 2024-02-13
编程技术问答社区