小编Sim*_*ris的帖子

Canvas.drawBitmap()忽略了paint的tile模式

我想绘制位图的子部分,但大小不同.如果大小比位图中的源矩形大,那么我希望位图的该部分平铺以填充目标区域.然而,他们没有得到平铺,而是被拉伸了.

我设置了所有变量如下:

Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.image);
Rect srcRect = ...
Rect dstRect = ...
Paint p = new Paint();
p.setShader(new BitmapShader(b, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT));
Run Code Online (Sandbox Code Playgroud)

然后在draw()方法中我绘制如下:

canvas.drawBitmap(b, srcRect, dstRect, p);
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我该如何绘制srcRectdstRect使位图的子部分得到平铺?

android bitmap android-canvas

3
推荐指数
1
解决办法
3088
查看次数

删除frame.add(Component)时,组件必须是有效的对等方

我这里有这个代码用于创建像素数组并将其绘制到图像中:

import javax.swing.JFrame;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferInt;

public class test extends Canvas implements Runnable {

    private static final long serialVersionUID = 1L;
    public static int WIDTH = 800;
    public static int HEIGHT = 600;
    public boolean running = true;
    public int[] pixels;
    public BufferedImage img;
    public static JFrame frame;
    private Thread thread;

    public static void main(String[] arg) {
        test wind = new test();
        frame = new JFrame("WINDOW");
        frame.add(wind);
        frame.setVisible(true);
        frame.setSize(WIDTH, HEIGHT);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        wind.init();
    } …
Run Code Online (Sandbox Code Playgroud)

java swing bufferedimage awt

3
推荐指数
1
解决办法
4630
查看次数

更改画布内矩形的比例

我有一个Canvas带有Rectangle

<Canvas>
   <Rettangle/>
</Canvas>
Run Code Online (Sandbox Code Playgroud)

我希望,当我调整画布大小时,矩形保持相同的相对位置,例如:

----------------------------------------
|                                      |
|                                      |
|           ____                       |
|          |    |                      |
|          |____|                      |
|                                      |
|--------------------------------------


--------------------
|                   |
|   ___             |
|   |__|            |
|                   |
|-------------------
Run Code Online (Sandbox Code Playgroud)

我能怎么做?

c# wpf xaml shapes wpf-controls

3
推荐指数
1
解决办法
4014
查看次数

Android开发:将小磁贴/位图组合成一个位图

我试图将我的所有小图像,如草,水和沥青等,放到一个位图中.

我有一个像这样的数组:

public int Array[]={3, 1, 3, 3, 1, 1, 3, 3, 3, 3, 
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
            1, 1, 1, 1 ,1 ,1, 1, 1 ,1 ,1 
            ,7 ,7 ,7, 7, 7 ,7, 7 ,7 ,7, 7 
            ,7 ,7 ,7 ,7, 7 ,7, 7 ,7 ,7 ,7 
            ,7 ,7 ,7 ,7, 7, 7, 7, 7 ,7 ,7 
            ,7 ,7 ,7 ,7, 7, 7 ,7 ,7 ,7 ,7 
            ,7 ,7 ,7 ,7, 7, 7, …
Run Code Online (Sandbox Code Playgroud)

android 2d surfaceview map-edit android-canvas

2
推荐指数
1
解决办法
1833
查看次数

在画布上绘制一个矩形,中心位于触摸点

我正在尝试在画布上绘制一个矩形,中心位于触摸点.我正在使用以下代码:

canvas.drawRect((point.x + 15), (point.y + 15),(point.x + 15),(point.y + 15), paint);
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

但是当我使用时,

canvas.drawRect(point.x , point.y ,(point.x + 30),(point.y + 30), paint);
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,它有效.但唯一的危害是它不以触摸坐标为中心.矩形的左上角与触摸坐标重合.我哪里错了?

android android-canvas

2
推荐指数
1
解决办法
6486
查看次数

如何使用HTML 5 Canvas绘制沿弧形路径的文本?

我想绘制一个像这个flash动画的画布图形:http: //www.cci.com.tr/tr/bizi-taniyin/tarihcemiz/

我画了六个弧,我想在这些弧中写六个字.有任何想法吗?

html javascript canvas

2
推荐指数
4
解决办法
2万
查看次数

如何在WPF C#中获取Ellipse的位置?

我正在创建一个气泡游戏,屏幕上有很多气泡在移动,我想在用鼠标点击它时弹出一个气泡.

我可以轻松获得鼠标的位置,但我不知道如何获得椭圆的位置以检查与鼠标点的交点.

关于如何获得椭圆位置的任何想法?!!

我使用Canvas作为我的容器.

c# wpf ellipse wpf-controls

2
推荐指数
1
解决办法
4750
查看次数

在画布中获取矩形的位置

我正在制作一个只在画布上显示形状的软件,如果用户点击该形状,它就会消失,并显示另一个形状,依此类推.我的问题是如何检查用户是否点击了形状?我的解决方案是获取画布中对象的位置和相对于画布的鼠标位置,并检查鼠标光标是否在形状区域的范围内.但我找不到在画布中获取对象位置的方法.

c# position cursor wpf-controls

2
推荐指数
1
解决办法
1万
查看次数

在Delphi中在画布上绘制一个不可见的控件

我为Delphi制作了一个日历组件.现在我想在更改月份时添加视觉效果(如Windows Vista标准日历).

现在我想创建一个组件的不可见副本,并在画布上绘制它以将其用于视觉效果.我试过BitBlt功能,但它不起作用,因为控件是不可见的.有没有办法在画布上绘制一个不可见的控件?

delphi invisible draw

2
推荐指数
1
解决办法
1135
查看次数

Java BufferedImage从Canvas返回黑色图像

我一直在尝试制作一个简单的程序,它有一个像工具一样的画笔,打开时它创建了一个JFrame,在其中我放置了一个Canvas,用户可以在其中绘制.现在,我正在尝试使用在退出时调用的saveCanvas方法来保存绘图,但无论我做什么,我都会得到一个黑色图像.这是我的代码:

public class Test{

    JFrame f;
    Canvas c;
    int x=-1, y=-1;

    public Test() {
        f = new JFrame();
        f.setSize(1200, 800);
        c = new Canvas(){
            @Override
            public void paint(Graphics g){
                super.paint(g);
            }
        };
        f.add(c);
        c.addMouseMotionListener(new MouseMotionListener(){    
            @Override
            public void mouseMoved(MouseEvent e) {
                // empty
            }
            @Override
            public void mouseDragged(MouseEvent e){
                if(x==-1){
                   x = e.getX();
                   y = e.getY();
                }
               c.getGraphics().fillOval(x, y, 5, 5); 
               x = e.getX();
               y = e.getY();
            }
        });
        f.addWindowListener(new WindowAdapter(){
           @Override
           public void windowClosing(WindowEvent evt) {
                 onExit();
           }
           public …
Run Code Online (Sandbox Code Playgroud)

java swing bufferedimage image

2
推荐指数
1
解决办法
4940
查看次数