1

すでにしばらく検索しましたが、私の質問に対する答えを見つけることができませんでした。

まず、2 つの比較写真を示します。

方法 1: 方法 1 http://img713.imageshack.us/img713/3558/tcg6.jpg

方法 2: 方法 2 http://img716.imageshack.us/img716/2755/tcg7.jpg

方法 1 で問題が発生したことはありませんが、最近、単純に時間がかかりすぎることがわかり、方法 2 で解決しました。

方法 1 のコード:

private void drawDefaultOrientation() {
    for (int x = 0; x < width; x++) {
        for (int y = 0; y < height; y++) {
            int dx = Math.min(x, width - 1 - x);
            int dy = Math.min(y, height - 1 - y);
            if (dx < borderSize || dy < borderSize) {
                inBorder(dx, dy);
            }
            else {
                outBorder(dx, dy);
            }
            bufferedImage.setRGB(xOffset + x, yOffset + y, color.getRGB());
        }
    }
}    

方法 2 のコード:

private void drawDefaultOrientation() {
    DataBufferInt buffer = (DataBufferInt)bufferedImage.getRaster().getDataBuffer();
    int[] pixelArray = buffer.getData();
    for (int x = 0; x < width; x++) {
        for (int y = 0; y < height; y++) {
            int dx = Math.min(x, width - 1 - x);
            int dy = Math.min(y, height - 1 - y);
            if (dx < borderSize || dy < borderSize) {
                inBorder(dx, dy);
            }
            else {
                outBorder(dx, dy);
            }
            pixelArray[(xOffset + x) + ((yOffset + y) * bufferedImage.getWidth())] = color.getRGB();
        }
    }
}  

inBorder(dx, dy); にも注意してください。および outBorder(dx, dy); 色変数を、赤、緑、青、およびアルファ値を持つ色に設定します。

呼び出し先コード:

    new CustomRectangle(bufferedImage, 220, 90, 15, 245, 5, defaultOrientation) {
        @Override
        public void inBorder(final int dx, final int dy) {
            setColor(new Color(red, green, blue, 255 - Math.min(dx, dy)));
        }

        @Override
        public void outBorder(final int dx, final int dy) {
            setColor(new Color(red, green, blue, 128 - Math.min(dx, dy)));
        }
    }.draw();  

色の違いがなぜここにあるのか、私は本当に迷っています。

誰かが私を助けてくれることを本当に願っています。最初はアルファ値に関係があると思っていましたが、ご覧のとおり、メソッド 2 ではアルファ変動がまだ存在しています。

よろしく。

4

1 に答える 1