Pixodrip is an art application created using Java that lets users draw on a bitmap canvas using a powerful brush, with the abilities to manipulate the hue, saturation, and brightness of the pixels in its radius.
When you start to create a brand new canvas, pixodrip allows you to control the size of each pixel. This can create different feelings as a smaller tilesize can achieve finer blends while a larger tilesize creates abstract canvases.
public class SetNewPanel extends JPanel {
final int width = 800;
final int height = 600;
Color bgColor = new Color(04, 04, 04);
boolean tileSizeClicked;
boolean newCanvasClicked;
boolean baseHClicked;
boolean backButtonClicked;
public SetNewPanel(){
// Set up panel and boolean variables to check for buttons
this.setPreferredSize(new Dimension(width, height));
this.setBackground(bgColor);
this.setDoubleBuffered(true);
this.setFocusable(true);
tileSizeClicked = false;
newCanvasClicked = false;
baseHClicked = false;
backButtonClicked = false;
// Set layout to null so that buttons can be placed at specific locations
this.setLayout(null);
// Create buttons
ImageIcon tileSizeIcon = new ImageIcon("src/Main/Assets/tileSizeButton.png");
JButton tileSizeButton = new JButton(tileSizeIcon);
tileSizeButton.setBounds(250 - tileSizeIcon.getIconWidth()/2, 250, tileSizeIcon.getIconWidth(), tileSizeIcon.getIconHeight());
tileSizeButton.setContentAreaFilled(false);
tileSizeButton.setBorderPainted(false);
tileSizeButton.setFocusPainted(false);
ImageIcon baseHIcon = new ImageIcon("src/Main/Assets/baseHButton.png");
JButton baseHButton = new JButton(baseHIcon);
baseHButton.setBounds(550 - baseHIcon.getIconWidth()/2, 250, baseHIcon.getIconWidth(), baseHIcon.getIconHeight());
baseHButton.setContentAreaFilled(false);
baseHButton.setBorderPainted(false);
baseHButton.setFocusPainted(false);
ImageIcon createCanvasIcon = new ImageIcon("src/Main/Assets/CreateCanvasButton.png");
JButton createCanvasButton = new JButton(createCanvasIcon);
createCanvasButton.setBounds(680 - createCanvasIcon.getIconWidth()/2, 520, createCanvasIcon.getIconWidth(), createCanvasIcon.getIconHeight());
createCanvasButton.setContentAreaFilled(false);
createCanvasButton.setBorderPainted(false);
ImageIcon backIcon = new ImageIcon("src/Main/Assets/backButton.png");
JButton backButton = new JButton(backIcon);
backButton.setBounds(150 - backIcon.getIconWidth()/2, 520, backIcon.getIconWidth(), backIcon.getIconHeight());
backButton.setContentAreaFilled(false);
backButton.setBorderPainted(false);
// Add action listeners to buttons
tileSizeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
tileSizeClicked = true;
}
});
baseHButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
baseHClicked = true;
}
});
createCanvasButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
newCanvasClicked = true;
}
});
backButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
backButtonClicked = true;
}
});
// Add mouse animations to buttons
createCanvasButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
createCanvasButton.setBounds(680 - createCanvasIcon.getIconWidth()/2, 520, createCanvasIcon.getIconWidth() + 20, createCanvasIcon.getIconHeight());
}
public void mouseExited(java.awt.event.MouseEvent evt) {
createCanvasButton.setBounds(680 - createCanvasIcon.getIconWidth()/2, 520, createCanvasIcon.getIconWidth(), createCanvasIcon.getIconHeight());
}
});
baseHButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
baseHButton.setBounds(550 - baseHIcon.getIconWidth()/2, 250, baseHIcon.getIconWidth() + 5, baseHIcon.getIconHeight() + 5);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
baseHButton.setBounds(550 - baseHIcon.getIconWidth()/2, 250, baseHIcon.getIconWidth(), baseHIcon.getIconHeight());
}
});
tileSizeButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
tileSizeButton.setBounds(250 - tileSizeIcon.getIconWidth()/2, 250, tileSizeIcon.getIconWidth() + 5, tileSizeIcon.getIconHeight() + 5);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
tileSizeButton.setBounds(250 - tileSizeIcon.getIconWidth()/2, 250, tileSizeIcon.getIconWidth(), tileSizeIcon.getIconHeight());
}
});
backButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
backButton.setBounds(150 - backIcon.getIconWidth()/2, 520, backIcon.getIconWidth() + 20, backIcon.getIconHeight());
}
public void mouseExited(java.awt.event.MouseEvent evt) {
backButton.setBounds(150 - backIcon.getIconWidth()/2, 520, backIcon.getIconWidth(), backIcon.getIconHeight());
}
});
}
}
Because Pixodrip runs locally, it has the ability to save your drawings locally. You can also edit your canvases and save them under the same file location.
if (savePanel.getSaveClicked() == true){
currentGrid.setName(savePanel.getGridName());
//save the grid
if (saveIndex == -1){
gridList.addGrid(currentGrid);
} else {
gridList.replaceGrid(saveIndex, currentGrid);
}
try {
FileOutputStream fileOut = new FileOutputStream("data/gridData.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(gridList);
out.close();
fileOut.close();
} catch (IOException i) {
i.printStackTrace();
}
savePanel.resetSaveClicked();
savePanel.resetBackClicked();
break;
}
There are five options for brushes. Hue wheel, add saturation, remove saturation, add brightness, and remove brightness. The brush radius can also be increased and decreased.
//change the hsb values of the tile that the mouse is on
if (mouseHandler.isPressed){
for (Coordinate coord: area.getArea()){
if (coord.checkBounds()){
int gridx = coord.getX()/tileSize;
int gridy = coord.getY()/tileSize;
if (SettingsPanel.brushID == 0){
grid.getGrid()[gridy][gridx].changeH(0.005f);
}
if (SettingsPanel.brushID == 1){
grid.getGrid()[gridy][gridx].changeS(0.005f);
}
if (SettingsPanel.brushID == 2){
grid.getGrid()[gridy][gridx].changeS(-0.005f);
}
if (SettingsPanel.brushID == 3){
grid.getGrid()[gridy][gridx].changeB(0.005f);
}
if (SettingsPanel.brushID == 4){
grid.getGrid()[gridy][gridx].changeB(-0.005f);
}
}
}
}
OR Take me to another project:
Back to Projects <joshualo1247220@gmail.com
@joshuajjlo