Draw pixel 2
- Task
Create a window and draw a pixel in it, subject to the following:
- the window is 640 x 480
- the color of the pixel must be yellow (255,255,0)
- the position of the pixel is random
C
Same as the Draw a pixel task, uses the random number functions of stdlib.h to plot a random point. Requires the WinBGIm library. <lang C> /*Abhishek Ghosh, 12th June 2018*/
- include<graphics.h>
- include<stdlib.h>
- include<time.h>
int main() { srand(time(NULL));
initwindow(640,480,"Yellow Random Pixel");
putpixel(rand()%640,rand()%480,YELLOW);
getch();
return 0; } </lang>
FreeBASIC
<lang freebasic>' version 04-07-2018 ' compile with: fbc -s console ' or: fbc -s gui
Screen 18, 24 ' Screen 18: 640x480, 24bit colordepth 'ScreenRes 640, 480, 24 ' Screenres: 640x480, 24bit colordepth
If ScreenPtr = 0 Then
Print "Error setting video mode!" End
End If
Randomize Timer Dim As UInteger x = Rnd * 640, y = Rnd * 480
PSet (x, y), RGB(255,255,0) ' yellow
' empty keyboard buffer While Inkey <> "" : Wend WindowTitle "0, 0 is top left, pixel is at " & x & ", " & y & " hit any key to end program" Sleep End</lang>
Go
<lang go>package main
import (
"fmt" "image" "image/color" "image/draw" "math/rand" "time"
)
func main() {
rect := image.Rect(0, 0, 640, 480) img := image.NewRGBA(rect)
// Use blue background, say. blue := color.RGBA{0, 0, 255, 255} draw.Draw(img, rect, &image.Uniform{blue}, image.ZP, draw.Src)
// Set color of a random pixel to yellow yellow := color.RGBA{255, 255, 0, 255} width := img.Bounds().Dx() height := img.Bounds().Dy() rand.Seed(time.Now().UnixNano()) x := rand.Intn(width) y := rand.Intn(height) img.Set(x, y, yellow)
// Check there's exactly one random yellow pixel. cmap := map[color.Color]string{blue: "blue", yellow: "yellow"} for i := 0; i < width; i++ { for j := 0; j < height; j++ { c := img.At(i, j) if cmap[c] == "yellow" { fmt.Printf("The color of the pixel at (%d, %d) is yellow\n", i, j) } } }
}</lang>
- Output:
Sample output:
The color of the pixel at (525, 163) is yellow
Kotlin
This is a variation of the Draw a pixel task and so therefore is the code to accomplish it. <lang scala>// Version 1.2.41
import java.awt.Color import java.awt.Graphics import java.awt.image.BufferedImage import java.util.Random
class BasicBitmapStorage(width: Int, height: Int) {
val image = BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR)
fun fill(c: Color) { val g = image.graphics g.color = c g.fillRect(0, 0, image.width, image.height) }
fun setPixel(x: Int, y: Int, c: Color) = image.setRGB(x, y, c.getRGB())
fun getPixel(x: Int, y: Int) = Color(image.getRGB(x, y))
}
fun main(args: Array<String>) {
val rand = Random() val bbs = BasicBitmapStorage(640, 480) with (bbs) { fill(Color.white) // say val x = rand.nextInt(image.width) val y = rand.nextInt(image.height) setPixel(x, y, Color.yellow) // check there's exactly one random yellow pixel for (i in 0 until image.width) { for (j in 0 until image.height) { if (getPixel(i, j) == Color.yellow) { println("The color of the pixel at ($i, $j) is yellow") } } } }
}</lang>
- Output:
Sample output:
The color of the pixel at (296, 15) is yellow
Perl 6
Coordinates of random pixel displayed in window title. To make the single pixel show up better I filled in the drawing area background with black to get better contrast.
<lang perl6>use GTK::Simple; use GTK::Simple::DrawingArea; use Cairo; my ($w, $h) = 640, 480; my ($x, $y) = (^$w).pick, (^$h).pick;
my $app = GTK::Simple::App.new(:title("Draw Pixel 2 @ $x,$y")); my $da = GTK::Simple::DrawingArea.new; gtk_simple_use_cairo;
$app.set-content( $da ); $app.border-width = 5; $da.size-request($w, $h);
sub rect-do( $d, $ctx ) {
given $ctx { .rgb(0, 0, 0); .rectangle(0, 0, $w, $h); .fill; .rgb(1, 1, 0); .rectangle($x, $y, 1, 1); .fill; }
}
my $ctx = $da.add-draw-handler( &rect-do ); $app.run;</lang>
Ring
<lang ring>
- Project : Draw pixel 2
- Date : 2018/06/12
- Author : Gal Zsolt (~ CalmoSoft ~)
- Email : <calmosoft@gmail.com>
load "guilib.ring"
new qapp {
nwidth = 320 nheight= 240 win1 = new qwidget() { setwindowtitle("Draw Pixel 2") setgeometry(100,100,640,480) label1 = new qlabel(win1) { setgeometry(10,10,640,480) settext("") } new qpushbutton(win1) { setgeometry(200,400,100,30) settext("draw") setclickevent("draw()") } new qpushbutton(win1) { setgeometry(300,400,100,30) settext("get pixel color") setclickevent("PixelColor()") } show() } exec()
}
func draw()
p1 = new qpicture() color = new qcolor() { setrgb(255,255,0,255) } pen = new qpen() { setcolor(color) setwidth(10) } new qpainter() { begin(p1) setpen(pen) x = random(nwidth-1) + 1 y = random(nheight-1) + 1 see "x = " + x + " y = " + y + nl drawpoint(x,y) endpaint() } label1 { setpicture(p1) show() }
func PixelColor()
oapp = new qapp(0,null) { screen = win1.windowhandle().screen() pixmap = screen.grabwindow(0,0,0,-1,-1) image = pixmap.toimage() color = image.pixel(100,100) mycolor = new qcolor() mycolor.setrgb(255,255,0,255) see nl+"red : " + mycolor.red() + nl see "green : " + mycolor.green() + nl see "blue : " + mycolor.blue() + nl }
</lang> Outputimage: