javafx.scene.image.PixelWriter#setArgb ( )源码实例Demo

下面列出了javafx.scene.image.PixelWriter#setArgb ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: phoebus   文件: ColorMapDialog.java
/** Update color bar in UI from current 'map' */
private void updateColorBar()
{
    // On Mac OS X it was OK to create an image sized 256 x 1:
    // 256 wide to easily set the 256 colors,
    // 1 pixel height which is then stretched via the BackgroundSize().
    // On Linux, the result was garbled unless the image height matched the
    // actual height, so it's now fixed to COLOR_BAR_HEIGHT
    final WritableImage colors = new WritableImage(256, COLOR_BAR_HEIGHT);
    final PixelWriter writer = colors.getPixelWriter();
    for (int x=0; x<256; ++x)
    {
        final int arfb = ColorMappingFunction.getRGB(map.getColor(x));
        for (int y=0; y<COLOR_BAR_HEIGHT; ++y)
            writer.setArgb(x, y, arfb);
    }
    // Stretch image to fill color_bar
    color_bar.setBackground(new Background(
            new BackgroundImage(colors, BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT,
                                BackgroundPosition.DEFAULT,
                                new BackgroundSize(BackgroundSize.AUTO, BackgroundSize.AUTO, true, true, true, true))));
}
 
源代码2 项目: oim-fx   文件: NinePatch.java
/**
 * 生成指定宽高图片
 *
 * @param scaledWidth
 * @param scaledHeight
 * @return
 */
public Image generate(int scaledWidth, int scaledHeight) {
    WritableImage result = new WritableImage(scaledWidth, scaledHeight);
    PixelReader reader = origin.getPixelReader();
    PixelWriter writer = result.getPixelWriter();
    int originHCenterWidth = (int) origin.getWidth() - right - left;
    int originVCenterWidth = (int) origin.getHeight() - top - bottom;
    /* first row */
    writer.setPixels(0, 0, left, top, reader, 0, 0);
    for (int y = 0; y < top; y++) {
        for (int x = left; x < scaledWidth - right; x++) {
            writer.setArgb(x, y, reader.getArgb(left + (x - left) % originHCenterWidth, y));
        }
    }
    writer.setPixels(scaledWidth - right, 0, right, top, reader, (int) origin.getWidth() - right, 0);
    /* second row */
    for (int y = top; y < scaledHeight - bottom; y++) {
        for (int x = 0; x < left; x++) {
            writer.setArgb(x, y, reader.getArgb(x, top + (y - top) % originVCenterWidth));
        }
    }
    for (int y = top; y < scaledHeight - bottom; y++) {
        for (int x = left; x < scaledWidth - right; x++) {
            writer.setArgb(x, y,
                    reader.getArgb(left + (x - left) % originHCenterWidth, top + (y - top) % originVCenterWidth));
        }
    }
    for (int y = top; y < scaledHeight - bottom; y++) {
        for (int x = scaledWidth - right; x < scaledWidth; x++) {
            writer.setArgb(x, y,
                    reader.getArgb((int) origin.getWidth() + x - scaledWidth, top + (y - top) % originVCenterWidth));
        }
    }
    /* third row */
    writer.setPixels(0, scaledHeight - bottom, left, bottom, reader, 0, (int) origin.getHeight() - bottom);
    for (int y = scaledHeight - bottom; y < scaledHeight; y++) {
        for (int x = left; x < scaledWidth - right; x++) {
            writer.setArgb(x, y,
                    reader.getArgb(left + (x - left) % originHCenterWidth, (int) origin.getHeight() + y - scaledHeight));
        }
    }
    writer.setPixels(scaledWidth - right, scaledHeight - bottom, right, bottom, reader,
            (int) origin.getWidth() - right, (int) origin.getHeight() - bottom);
    return result;
}
 
源代码3 项目: jace   文件: VideoNTSC.java
private void renderScanline(WritableImage screen, int y) {
        int p = 0;
        if (rowStart != 0) {
//            getCurrentWriter().markDirty(y);
            p = rowStart * 28;
            if (rowStart < 0) {
                return;
            }
        }
        PixelWriter writer = screen.getPixelWriter();
        // Reset scanline position
        int byteCounter = 0;
        for (int s = rowStart; s < 20; s++) {
            int add = 0;
            int bits;
            if (hiresMode) {
                bits = scanline[s] << 2;
                if (s > 0) {
                    bits |= (scanline[s - 1] >> 26) & 3;
                }
            } else {
                bits = scanline[s] << 3;
                if (s > 0) {
                    bits |= (scanline[s - 1] >> 25) & 7;
                }
            }
            if (s < 19) {
                add = (scanline[s + 1] & 7);
            }
            boolean isBW = false;
            boolean mixed = enableVideo7 && dhgrMode && graphicsMode == rgbMode.MIX;
            for (int i = 0; i < 28; i++) {
                if (i % 7 == 0) {
                    isBW = monochomeMode || !colorActive[byteCounter] || (mixed && !hiresMode && !useColor[byteCounter]);
                    byteCounter++;
                }
                if (isBW) {
                    writer.setColor(p++, y, ((bits & 0x8) == 0) ? BLACK : WHITE);
                } else {
                    writer.setArgb(p++, y, activePalette[i % 4][bits & 0x07f]);
                }
                bits >>= 1;
                if (i == 20) {
                    bits |= add << (hiresMode ? 9 : 10);
                }
            }
//                    } else {
//                        for (int i = 0; i < 28; i++) {
//                            writer.setArgb(p++, y, activePalette[i % 4][bits & 0x07f]);
//                            bits >>= 1;
//                            if (i == 20) {
//                                bits |= add << (hiresMode ? 9 : 10);
//                            }
//                        }
//                    }
        }
        Arrays.fill(scanline, 0);
        rowStart = -1;
    }
 
 同类方法