javascript - Belirli alanlarda resimde x ve y'yi seç ve üzerine bir sınır oluştur
Resmi seçmeye dayalı bir sorun yaşıyorum. BE'den gelen bir nesne dizim var ve her nesnenin kendi koordinatları var, bu koordinatlar resmin X ve Y değerlerine bağlı. Resimde bazı çizimler var ve bazı sayıları içeriyor. Bu nedenle Obj üzerindeki itemNumber özelliği, resimde gösterilecek olan sayıyla aynı. Örneğin, itemNumber 1 ise, koordinatlar sonucunda 1 sayısı resimde çerçevelenecek.
Şimdiye kadar bir şey başardım ama doğru X ve Y'yi her seferinde seçemiyorum, başka bir yere gidiyor sınırın ötesine.
Bir Stackblitz oluşturdum
Stackblitz'te 2 resim bulabilirsiniz. İkincisinde nasıl olması gerektiğini göreceksiniz. Birçok şey denedim ama başarılı olamadım
İşte benim Obj json'um.
[
{
"itemNumber": "1",
"partNumber": "4400535240",
"coordinates": [
{
"itemCounter": 0,
"xposition": 970,
"yposition": 375
}
]
},
{
"itemNumber": "2",
"partNumber": "4400541680",
"coordinates": [
{
"itemCounter": 0,
"xposition": 1282,
"yposition": 522
}
]
},
{
"itemNumber": "4",
"partNumber": "4400541390",
"coordinates": [
{
"itemCounter": 0,
"xposition": 445,
"yposition": 307
}
]
},
]`
İşte benim TS Kodum.
showCorner(event: ResponseList) {
console.log(event.coordinates)
const xClientHeight = document.getElementById('imgPath')?.clientHeight as number;
const xClientWidth = document.getElementById('imgPath')?.clientWidth as number;
console.log(xClientHeight);
console.log(xClientWidth);
this.coordinateX = xClientWidth - event.coordinates[0].yposition;
this.coordinateY = xClientHeight - event.coordinates[0].xposition;
(document.getElementById('rec1') as HTMLInputElement).innerHTML = "<img src='../../../assets/rec.gif' style='width:25px; height:25px;'></img>";
}
showImage(imagePath: string) {
return this.environment.endpoints.backendBaseUrl + imagePath; //
imagePath
}
Benim HTML Kodum
<table>
<thead>
<tr>
<th scope="col">Name</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let row of jsonData">
<td (click)="showCorner(row)">{{ row.name }}</td>
</tr>
</tbody>
</table>
<div class="flex-1 relative">
<div class="relative">
<img id="imgPath" (click.double)="addBorder($event)" style="width: 832px; max-width: fit-content;" [src]="showImage(partListImage.imagePath)">
<div id="rec1" class="absolute" [style]="{'left': coordinateX+ 'px', 'top': coordinateY+ 'px'}">
</div>
</div>
</div>
Görüntülerde görebileceğiniz gibi sayılar var. Ve tabloya tıkladığınızda her sayı seçilecektir.