अरे। मेरे पास 480 x 800 छवि है और इसे मेरे टाइलमैप पर रखना चाहूंगा। मैं छवि को ग्रिड (6 x 10) में विभाजित करने की कोशिश कर रहा हूं और छवि के विशिष्ट भाग को प्रत्येक टाइल असाइन कर रहा हूं। अनिवार्य रूप से, टाइलमैप एक बड़ी छवि की तरह दिखेगा क्योंकि प्रत्येक टाइल में संलग्न छवि का प्रासंगिक हिस्सा होता है। ऐसा करने का सबसे अच्छा तरीका क्या है? मैंने प्रत्येक टाइल के माध्यम से जाने और इसे लिखने योग्य बिटमैप पर खींचने का प्रयास किया है, लेकिन सभी छवियां समान हैं।टाइल्स में छवि को तोड़ें
WriteableBitmap wb = new WriteableBitmap(80,80);
Rect src= new Rect(x*Width,y*Height, 80, 80);
Rect dest= new Rect(0, 0, 80, 80);
wb.Blit(dest, mainWb, src);
tile.SetImage(wb);
(x और y) बस जब tilemap के माध्यम से पुनरावृत्ति इस्तेमाल किया अनुक्रमित कर रहे हैं, 80 टाइल ऊंचाई और चौड़ाई है और mainWb
बड़ी छवि मैं विभाजित करना चाहते है। किसी भी मदद के लिए धन्यवाद।
संपादित करें: पूर्ण लूप कोड:
var mainImage = Application.GetResourceStream(new Uri("MainImage.jpg", UriKind.Relative)).Stream;
WriteableBitmap mainWb = new WriteableBitmap(480, 800);
mainWb.SetSource(mainImage);
for (int x = 0; x < 6; x++)
{
for (int y = 0; y < 12; y++)
{
Tile tile = new Tile();
WriteableBitmap wb = new WriteableBitmap(80,80);
Rect src = new Rect(x*Width,y*Height, 80, 80);
Rect dest = new Rect(0, 0, 80, 80);
wb.Blit(dest, mainWb, src);
tile.SetImage(wb);
Canvas.SetLeft(tile, x * WIDTH);
Canvas.SetTop(tile, y * HEIGHT);
LayoutRoot.Children.Add(tile);
ls.Add(tile);
}
}
Tile
वर्ग एक छवि नियंत्रण के साथ एक सरल 80x80 कैनवास img
कहा जाता है। SetImage
विधि ऊपर यह है:
public void SetImage(WriteableBitmap wb)
{
img.Source = wb;
}
वह कोड सही लगता है। क्या आप पूरे लूप पोस्ट कर सकते हैं? –
@ ओलिवियर पायन - मैंने पूर्ण लूप जोड़ा है। – Skoder