所以标题几乎都说明了......
我正在开发一个libGDX项目,该项目需要我拍摄不同图像的部分(例如:从2000x2000图像中取出100x100块)并将其存储为libGDX纹理。
最终目标是采用此纹理并用它填充多边形。
我知道我可以手动格式化这些图像,但这并不好。将始终使用新图像。并且每个部分都有很多部分。
我一直在浏览libGDX api,但一无所获。要么我在错误的地方寻找,要么我正在寻找错误的事情。只要在正确的方向上轻推,我会很高兴。
由于
答案 0 :(得分:2)
正如icarumbas所说,你可以使用TextureRegion。 TextureRegion将保存对存储区域的纹理的引用,以及纹理中图像的宽度,高度,x位置和y位置。无需将图像拆分为单独的纹理,因为TextureRegion旨在存储纹理区域而无需创建更多纹理。
示例:
Texture wholeImage = new Texture("imagePath");
TextureRegion firstRegion = new TextureRegion(wholeImage,0,0,50,50); // gets the region from the 0,0 point of the whole image and is 50 x 50px
TextureRegion secondRegion = new TextureRegion(wholeImage,0,50,50,50); // gets the region from the 0,50 point of the whole image and is 50 x 50px
TextureRegion topRegion = new TextureRegion(wholeImage,50,0,100,50); // gets the region from the 50,0 point of the whole image and is 100 x 50px
然后可以使用与spritebatch
绘制普通纹理相同的方式绘制它们batch.begin();
batch.draw(firstRegion, 30,30);
batch.draw(secondRegion , 130,30);
batch.draw(topRegion , 130,130);
batch.end();
使用TextureRegions时的一个常见问题是人们使用getTexture()方法。此方法用于获取整个纹理而不是定义的区域。
答案 1 :(得分:1)
您可以使用TextureRegion $imagelog = Get-Content C:\Windows\ImageLog.ini
foreach ($line in $imagelog) {
if ($line -like "*Gateway*") {
$line | out-file -FilePath "C:\Windows\Gateway.txt"
}
}
$gatewayIP = get-content c:\windows\Gateway.txt
$GIP = $gatewayIp -replace '.*:.'.Trim()
if ( Test-Connection -ComputerName $Gip -Count 1 -ErrorAction SilentlyContinue ) {
Write-Host $GIP `t $GIP `t Ping Success -ForegroundColor Green
}
else{
$details = get-content c:\windows\imagelog.ini
foreach ($line in $details) {
if ($line -like "*IP Address*") {
$line | out-file -FilePath "C:\Windows\IP Address.txt"
}
#}
$IP = get-content c:\windows\IP Address.txt
$systemip = $Ip -replace '.*:.'.Trim()
foreach ($line in $details) {
if ($line -like "*Subnet Mask*") {
$line | out-file -FilePath "C:\Windows\subnet.txt"
}
}
$subnet = get-content c:\windows\subnet.txt
$subnetip = $subnet -replace '.*:.'.Trim()
netsh interface ip set address "Local Area Connection" static $systemip $subnetip $GIP
foreach ($line in $details) {
if (Hostname.StartsWith("LCG")) {
Set-DNSClientServerAddress –Local Area Connection –ServerAddresses (“10.0.6.65”,”10.0.25.65”,"10.0.0.1")
}
elseif (Hostname.StartsWith("ENG")) {
Set-DNSClientServerAddress –Local Area Connection –ServerAddresses (“10.80.38.33”,”10.0.25.65”,"10.0.0.1")
}
}
}
}
方法。
split(..)
这将从这个TextureRegion创建一个tile,从左上角开始,一直到右边,一直到右下角。
UPD:
如果您的区域大小不同或未放置在网格中。使用Pixmap
TetureRegion reg = new TextureRegion(new Texture("pathToYourImage"));
TextureRegion[][] subRegions = reg.split(100, 100);
方法。
drawPixmap(..)