首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用用户定义的量水平滚动图像

用用户定义的量水平滚动图像
EN

Stack Overflow用户
提问于 2013-10-22 22:22:01
回答 2查看 311关注 0票数 1

我正在努力学习如何水平滚动图像。假设用户输入了一个整数量,返回的图像将是一个新的图像,该值将向左移动,而左边的大多数像素将出现在图像的右侧。我一直想弄清楚这一点,但是我遇到了一些错误。

有什么想法吗?我对图像处理和处理非常陌生。

到目前为止我写的都是这样的。

代码语言:javascript
复制
public void scrollHorizontal(int numpixels){
    horizontalscroll = new Picture(image6.getWidth(), image6.getHeight());

    for (int i = 0; i<image6.getWidth(); i++){
        for (int j=0; j<image6.getHeight(); j++){
            pix2 = image6.getPixel(i, j);
            horizontalscroll.setPixel(i-numpixels, j, pix2);
            System.out.println(i);
        }
    }
    for (int i = 0; i< image6.getWidth(); i++){
        for (int j = 0; j<image6.getHeight(); j++){
            pix2 = horizontalscroll.getPixel(i, j);
            horizontalscroll.setPixel(image6.getWidth()-numpixels-i ,j, pix2);
            //System.out.println(i);
        }

    }
    horizontalscroll.store("scrollhorizontal.gif");
}

Picture类只是基于(x,y)创建一个图片对象。getPixel()是Picture类的一个方法。'pix2‘是一个像素对象。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-23 05:44:06

经过多次反复试验,我终于明白了这一点。谢谢。我只是想和你分享!

代码语言:javascript
复制
public void scrollHorizontal(int numpixels){ //allows the user to define numpixels to scroll horizontally by.
    int height = image6.getHeight();        //creates a new image that is scrolled horizontally by the entered numpixels amount.
    int width = image6.getWidth();
    horizontalscroll = new Picture(image6.getWidth(), image6.getHeight());
    for (int i = numpixels; i < width; i++){
        for (int j = 0; j < height; j++){
            pix2 = image6.getPixel(i, j);
            horizontalscroll.setPixel(i-numpixels, j, pix2);
        }
    }
    for (int i = 0; i < numpixels; i++){
        for (int j = 0; j < height; j++){
            pix2 = image6.getPixel(i, j);
            horizontalscroll.setPixel((width-numpixels) + i, j, pix2);
        }
    }
    horizontalscroll.store("scrollhorizontal.gif"); //stores new picture object to a new file.
}
票数 0
EN

Stack Overflow用户

发布于 2013-10-23 00:47:26

您的bug位于类似于此的行中:

代码语言:javascript
复制
horizontalscroll.setPixel(i-numpixels, j, pix2);

当我小于numPixels时,您将尝试在负坐标下设置值。

正确的解决办法是:

代码语言:javascript
复制
public void scrollHorizontal(int numpixels){
  int wid = image6.getWidth();
  int hei = image6.getHeight();
  if (wid < Math.abs(numPixels)) {
    numPixels = numPixels % wid;
  }
  horizontalscroll = new Picture();
  if (numpixels >= 0) {
    for (int i = 0; i< hei; i++){
      for (int j = 0, h = wid - numPixels - 1; j < numPixels; ++j, ++h) {
        pix2 = image6.getPixel(i, h);
        horizontalscroll.setPixel(i, j, pix2);
      }
      for (int j = numPixels, h = 0; j< wid; ++j, ++h){
        pix2 = image6.getPixel(i, h);
        horizontalscroll.setPixel(i, j, pix2);
      }
    }
  } else {
    for (int i = 0; i< hei; i++){
      for (int j = 0, h = numPixels; j< wid - numPixels - 1; ++j, ++h) {
        pix2 = image6.getPixel(i, h);
        horizontalscroll.setPixel(i, j, pix2);
      }
      for (int j = wid - numPixels, h = 0; j < wid; ++j, ++h) {
        pix2 = image6.getPixel(i, h);
        horizontalscroll.setPixel(i, j, pix2);
      }
    }
  }

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19529453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档