पर तेज़ ग्राफिक्स ऑपरेशन लागू करें मैं WPF C# में एक साधारण ग्राफिक्स एप्लिकेशन बनाने की कोशिश कर रहा हूं। इसका उद्देश्य 10000 * 10000 आयताकार आकार 4 पिक्सेल प्रत्येक को आकर्षित करना है।WPF कैनवास
मैंने आयतों को आकर्षित करने के लिए कैनवास की ऑनरेंडर विधि को संशोधित किया है। चित्रों को छोटे आयतों के लिए किया जाता है (प्रत्येक 50 पिक्सेल के 50 * 50 या 100 * 100 आयतों का कहना है) लेकिन यह धीमा हो रहा है क्योंकि मैं संख्या बढ़ा रहा हूं। आयताकारों का।
protected override void OnRender(DrawingContext dc)
{
base.OnRender(dc);
FillCells(dc);
if (_ShowGrids)
{
DrawGrid(dc); // draw grid lines
}
}
void FillCells(DrawingContext dc)
{
int cellSize=4;
for (int i = 0; i < MaxRow; i++)
{
for (int j = 0; j < MaxColumn; j++)
{
dc.DrawRectangle(GetRectBrush(i,j), GetRectPen(i,j), new Rect(j * cellSize , i * cellSize , cellSize - 1, cellSize - 1));
}
}
}
ऊपर कोड 1000 * 1000 आयतों आकर्षित करने के लिए एक मिनट से भी अधिक समय लगता है:
बादमेरी कोड है।
क्या इस प्रक्रिया को तेज़ी से बनाने के लिए कोई तरीका है? क्या इस जगह पर कोई और चीज मैं उपयोग कर सकता हूं?
धन्यवाद।
क्या आपने विजुअल ब्रश का उपयोग करने पर विचार किया है? – TerrorAustralis
नहीं मैंने नहीं किया। क्या आप मुझे विजुअल ब्रश के कुछ उदाहरण दे सकते हैं? –
क्या आप स्मृति में प्रत्येक rectangel के लिए रंग भंडार कर रहे हैं? यदि नहीं, GetRectBrush (i, j) क्या कर रहा है? – TerrorAustralis