|
Cheat Engine The Official Site of Cheat Engine
|
View previous topic :: View next topic |
Author |
Message |
gibberishh Cheater Reputation: 1
Joined: 30 Aug 2021 Posts: 45
|
Posted: Mon Sep 30, 2024 11:34 pm Post subject: Image Control Repeating Picture? |
|
|
Image controls on forms: they have a Stretch [picture] property but not a Repeat [picture] property? Or am I having trouble finding it? Is there a straightforward way to repeat a small image to the height and width of the image control (canvas) -- or any other control? As one does with, say, HTML backgrounds?
My end goal is to find the most efficient way to create a grid with 9x9px cells separated by 1x1px black lines. Users can click anywhere on the grid and I can determine which cell was clicked based on MouseDown x,y.
Going into this project I assumed that having a picture repeat by itself as a background would be more efficient than drawing hundreds of lines. My largest grid is 256x256, so that would require 514 lines including external borders -- or, even worse, 65536 squares.
Thanks!
_________________
It's not cheating. It's playing by my rules. |
|
Back to top |
|
|
AylinCE Grandmaster Cheater Supreme Reputation: 34
Joined: 16 Feb 2017 Posts: 1404
|
Posted: Tue Oct 01, 2024 4:42 am Post subject: |
|
|
I will present you 2 different projects.
It is better to ask questions or find solutions with code examples.
This is my project:
Code: | if fdf1 then fdf1.Destroy() fdf1=nil end
DP1=getScreenDPI()/96
fdf1=createForm()
fdf1.height=286*DP1 fdf1.width=286*DP1
fdf1.PopupMode=0 fdf1.caption="fdf1"
fdf1.Position="poDesktopCenter" fdf1.ShowInTaskBar="stAlways"
fdf1.BorderStyle="bsSingle"
-------------------------
local imgTbl2 = {}
----------------------- imgTbl2.backImg1 -----
imgTbl2.backImg1=createImage(fdf1)
imgTbl2.backImg1.AutoSize=false
imgTbl2.backImg1.height=256*DP1 imgTbl2.backImg1.width=256*DP1 imgTbl2.backImg1.left=15*DP1 imgTbl2.backImg1.top=15*DP1
imgTbl2.backImg1.Font.Style="fsBold" imgTbl2.backImg1.Font.Size=0*DP1
imgTbl2.backImg1.Stretch=true
-----------------------
function createPictureFromURL(url)
local http = getInternet()
local file = http.getURL(url)
http.destroy()
local picture = createPicture()
local stream = createStringStream(file)
picture.loadFromStream(stream)
return picture
end
pct2 = createPictureFromURL("https://i.hizliresim.com/8m6rsj6.jpg")
imgTbl2.backImg1.Picture = pct2
--imgTbl2.backImg1.Picture.loadFromStream(findTableFile('exmimg1.jpg').Stream)
function img_px(frm,owr,px,py,nt)
local nxt1 = 0
local lf1 = owr.Left
local tp1 = owr.Top
local hg1 = owr.Height / tonumber(px)
local wd1 = owr.Width / tonumber(py)
for i=1, tonumber(nt) do
imgTbl2["imgs"..i] = createImage(frm)
imgTbl2["imgs"..i].Name = "imgs"..i
imgTbl2["imgs"..i].Height = hg1 + 0.0
imgTbl2["imgs"..i].Width = wd1
imgTbl2["imgs"..i].Top = tp1
imgTbl2["imgs"..i].Left = lf1
imgTbl2["imgs"..i].Cursor = -21
--clicked replace panels
imgTbl2["pnls"..i] = createPanel(frm)
imgTbl2["pnls"..i].Name = "pnls"..i
imgTbl2["pnls"..i].Height = hg1 + 0.0
imgTbl2["pnls"..i].Width = wd1
imgTbl2["pnls"..i].Top = tp1
imgTbl2["pnls"..i].Left = lf1
imgTbl2["pnls"..i].Cursor = -21
imgTbl2["pnls"..i].Caption = i
imgTbl2["pnls"..i].Color = 0xffff00
imgTbl2["pnls"..i].Visible = false
lf1 = tonumber(lf1) + tonumber(wd1)
nxt1 = tonumber(nxt1) + 1
if nxt1==tonumber(px) then
nxt1=0 lf1=owr.Left
tp1 = tonumber(tp1) + tonumber(hg1)
end
imgTbl2["imgs"..i].OnClick=function(sender)
local i1 = i
local sender1 = imgTbl2["pnls"..i]
print("Clicked object; "..sender.Name.." - Number of frames; "..i1)
sender.Visible=false sender1.Visible=true
end
imgTbl2["pnls"..i].OnClick=function(sender)
local i1 = i
local sender1 = imgTbl2["imgs"..i]
print("Clicked object; "..sender.Name.." - Number of frames; "..i1)
sender.Visible=false sender1.Visible=true
end
end
end
frm = fdf1
owr = imgTbl2.backImg1
px = 10
py = 10
nt = tonumber(px) * tonumber(py)
img_px(frm,owr,px,py,nt) |
---------------------------------------------------------------------
---------------------------------------------------------------------
If we assume that each movement of the coordinate pixels represents "+1",
we can divide it into 9 grids and calculate the results as follows:
Code: | if fdf1 then fdf1.Destroy() fdf1=nil end
DP1=getScreenDPI()/96
fdf1=createForm()
fdf1.height=286*DP1 fdf1.width=286*DP1
fdf1.PopupMode=0 fdf1.caption="fdf1"
fdf1.Position="poDesktopCenter" fdf1.ShowInTaskBar="stAlways"
fdf1.BorderStyle="bsSingle"
-------------------------
local imgTbl2 = {}
----------------------- imgTbl2.backImg1 -----
imgTbl2.backImg1=createImage(fdf1)
imgTbl2.backImg1.AutoSize=false
imgTbl2.backImg1.height=256*DP1 imgTbl2.backImg1.width=256*DP1 imgTbl2.backImg1.left=15*DP1 imgTbl2.backImg1.top=15*DP1
imgTbl2.backImg1.Font.Style="fsBold" imgTbl2.backImg1.Font.Size=0*DP1
imgTbl2.backImg1.Stretch=true
-----------------------
function createPictureFromURL(url)
local http = getInternet()
local file = http.getURL(url)
http.destroy()
local picture = createPicture()
local stream = createStringStream(file)
picture.loadFromStream(stream)
return picture
end
pct2 = createPictureFromURL("https://i.hizliresim.com/8m6rsj6.jpg")
imgTbl2.backImg1.Picture = pct2
--imgTbl2.backImg1.Picture.loadFromStream(findTableFile('exmimg1.jpg').Stream)
imgTbl2.backImg1.OnMouseDown=function(sender, button, x, y)
p1 = math.floor(x * y)
x1 = math.floor(x / 9)
y1 = math.floor(y / 9)
frame_9 = tonumber(x1) * tonumber(y1)
print("Clicked pixel: "..p1)
print("Clicked grid left to right:: "..x1)
print("Clicked grid from top to bottom:: "..y1)
print("Clicked grid:: "..frame_9)
end |
I hope it gave you ideas for your problem and solution.
Or if you wanted something different, we can continue with examples.
_________________
|
|
Back to top |
|
|
gibberishh Cheater Reputation: 1
Joined: 30 Aug 2021 Posts: 45
|
Posted: Wed Oct 02, 2024 8:12 pm Post subject: |
|
|
Thanks! I can use both your examples. This is very good. I came to the same conclusion as you did: that I will have to use a single large image for the full grid instead of having the image of one square repeat automatically.
Thanks again.
_________________
It's not cheating. It's playing by my rules. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
|
|