Ёсць хуткі спосаб нанясення знакаў на экране?

Я распрацаваў тэматычныя прыкладання матрыцы ў Java, і эксперыментаваў з партаваннем да C #. Тым не менш, я выявіў, што апошні DrawString метад прапанаваў значна горш прадукцыйнасць пры лёсаванні адзіночных знакаў. Такім чынам, я спадзяюся, што існуе адна з двух магчымасцяў:

  1. Існуе альтэрнатыўны метад жэрабя адзіночных сімвалаў, якія нашмат хутчэй. </Р>

  2. Існуе спосаб зрабіць радок з фіксаваным крокам для дасягнення таго ж эфекту. Гэта не здаецца верагодным. </Р>

Хто-небудзь ведае які-небудзь спосаб дасягнення альбо 1 або 2?

Дадатковая інфармацыя:

  • Мне трэба, каб мець магчымасць абвесці 20000 сімвалаў 30 раз у другі . </Р>

  • Сімвалы могуць мець адзін і той жа шрыфт і памер, але колер павінен быць у стане быць зменена. </Р>

  • Мноства сімвалаў канчатковыя (літары, лічбы і знакі прыпынку).

  • Размяшчэнне сімвалаў размешчаны ўздоўж 2D-сеткі, і не перакрываюць адзін аднаго.

1
Як хутка вам трэба?
дададзена аўтар David, крыніца
30 мільёнаў знакаў у секунду, гэта робіцца ў Java? Я не асмельваюся верыць. І наколькі вялікі ваш экран? Як гэта можа трымаць такую ​​кучу сімвалаў, якія таксама лёгка чытэльнымі?
дададзена аўтар David, крыніца
30 мільёнаў знакаў у секунду, гэта робіцца ў Java? Я не асмельваюся верыць. І наколькі вялікі ваш экран? Як гэта можа трымаць такую ​​кучу сімвалаў, якія таксама лёгка чытэльнымі?
дададзена аўтар David, крыніца
@ZongLi, вы не маглі б пашыраць толькі трохі на фоне вашага прыкладання?
дададзена аўтар David, крыніца
@ZongLi, вы не маглі б пашыраць толькі трохі на фоне вашага прыкладання?
дададзена аўтар David, крыніца
Ці спрабавалі вы WPF? wpf пры правільным выкарыстанні хутка. У адваротным выпадку Direct2D? ёсць абгортка для .NET тут: direct2dsharp.codeplex.com
дададзена аўтар Simon Mourier, крыніца
Ці спрабавалі вы WPF? wpf пры правільным выкарыстанні хутка. У адваротным выпадку Direct2D? ёсць абгортка для .NET тут: direct2dsharp.codeplex.com
дададзена аўтар Simon Mourier, крыніца
Ці спрабавалі вы WPF? wpf пры правільным выкарыстанні хутка. У адваротным выпадку Direct2D? ёсць абгортка для .NET тут: direct2dsharp.codeplex.com
дададзена аўтар Simon Mourier, крыніца
Што вы выкарыстоўваеце ў Java? 30 мільёнаў знакаў у секунду даволі шмат!
дададзена аўтар Anton Tykhyy, крыніца
Што вы выкарыстоўваеце ў Java? 30 мільёнаў знакаў у секунду даволі шмат!
дададзена аўтар Anton Tykhyy, крыніца
Што вы выкарыстоўваеце ў Java? 30 мільёнаў знакаў у секунду даволі шмат!
дададзена аўтар Anton Tykhyy, крыніца
Усе сімвалы маюць той жа шрыфт, памер і стыль?
дададзена аўтар SimpleVar, крыніца
Вы пабудову матрыцы анімацыі? Я падазраю, што вы будуеце Матрыца анімацыі. Матрыца анімацыі гэта крута. Мне падабаецца Матрыца анімацыі. Паспрабуйце трошкі «C # Матрыца анімацыі», упэўнены, вы можаце знайсці некаторыя карысныя парады ў кодзе іншых людзей.
дададзена аўтар SimpleVar, крыніца
Вы пабудову матрыцы анімацыі? Я падазраю, што вы будуеце Матрыца анімацыі. Матрыца анімацыі гэта крута. Мне падабаецца Матрыца анімацыі. Паспрабуйце трошкі «C # Матрыца анімацыі», упэўнены, вы можаце знайсці некаторыя карысныя парады ў кодзе іншых людзей.
дададзена аўтар SimpleVar, крыніца
Вы пабудову матрыцы анімацыі? Я падазраю, што вы будуеце Матрыца анімацыі. Матрыца анімацыі гэта крута. Мне падабаецца Матрыца анімацыі. Паспрабуйце трошкі «C # Матрыца анімацыі», упэўнены, вы можаце знайсці некаторыя карысныя парады ў кодзе іншых людзей.
дададзена аўтар SimpleVar, крыніца
Вы пабудову матрыцы анімацыі? Я падазраю, што вы будуеце Матрыца анімацыі. Матрыца анімацыі гэта крута. Мне падабаецца Матрыца анімацыі. Паспрабуйце трошкі «C # Матрыца анімацыі», упэўнены, вы можаце знайсці некаторыя карысныя парады ў кодзе іншых людзей.
дададзена аўтар SimpleVar, крыніца
Усе сімвалы маюць той жа шрыфт, памер і стыль?
дададзена аўтар SimpleVar, крыніца
Ях, я зразумеў, што гэта быў крыху вар'ятам. Я думаў пікселяў замест знакаў. Нязначная розніца, ха.
дададзена аўтар Zong, крыніца
Ях, я зразумеў, што гэта быў крыху вар'ятам. Я думаў пікселяў замест знакаў. Нязначная розніца, ха.
дададзена аўтар Zong, крыніца

8 адказы

Я не ведаю, які палымяны хуткай альтэрнатывы, але з выкарыстаннем GDI ( TextRenderer ) замест GDI + (DrawString) дасць лепшы вынік. Да 5-6 раз хутчэй.

GDI vs. GDI + Text рэндэрынгу

Another useful article - Rendering fast with GDI+ - What to do and what not to do!

4
дададзена

Я не ведаю, які палымяны хуткай альтэрнатывы, але з выкарыстаннем GDI ( TextRenderer ) замест GDI + (DrawString) дасць лепшы вынік. Да 5-6 раз хутчэй.

GDI vs. GDI + Text рэндэрынгу

Another useful article - Rendering fast with GDI+ - What to do and what not to do!

4
дададзена

Я не ведаю, які палымяны хуткай альтэрнатывы, але з выкарыстаннем GDI ( TextRenderer ) замест GDI + (DrawString) дасць лепшы вынік. Да 5-6 раз хутчэй.

GDI vs. GDI + Text рэндэрынгу

Another useful article - Rendering fast with GDI+ - What to do and what not to do!

4
дададзена

Я не ведаю, які палымяны хуткай альтэрнатывы, але з выкарыстаннем GDI ( TextRenderer ) замест GDI + (DrawString) дасць лепшы вынік. Да 5-6 раз хутчэй.

GDI vs. GDI + Text рэндэрынгу

Another useful article - Rendering fast with GDI+ - What to do and what not to do!

4
дададзена
<�Р> Ёсць альтэрнатыўны спосаб малявання шмат адзіночных сімвалаў, якія значна хутчэй?

Graphics.DrawString </а> метады выкарыстання GDI + маляваць, якая мае тэндэнцыю быць больш павольна, чым GDI. GDI звычайна апаратнае паскарэнне, калі ў вас ёсць прыстойны набор графічных драйвераў, усталяваных. Адзіным выключэннем з'яўляецца Windows Vista з тэмай Aero уключаны, але гэта была выпраўленая ў Windows 7. Вы можаце пераключыцца на GDI, а не з дапамогай выкліку аднаго з TextRenderer.DrawText метады замест. Мала таго, што, верагодна, будзе некалькі хутчэй, чым GDI +, ёсць і іншыя перавагі выкарыстання GDI. Адзіны рэальны недахопам з'яўляецца тое, што WinForms не падтрымлівае выкарыстанне GDI для друку. Але гэта не падобна, што гэта клопат пра вас.

Мяркуючы, што вы арыентуецеся толькі сучасныя версіі Windows, якія падтрымліваюць іх, вы маглі б таксама разгледзець некаторыя з новых графічных тэхналогій, такіх як Direct2D і DirectWrite. Для абгортак C#, вы можаце паглядзець у Windows API Code Pack (глядзіце таксама гэты блог артыкул ). OpenGL таксама можа быць варыянт. Я не выкарыстоўваў яго, але хуткасць сярод сваіх прэтэнзій да славы.

На жаль, я да гэтага часу не ўпэўнены, калі гэта будзе дастаткова хутка. Мільён сімвалаў 30 раз у секунду сапраўды неабгрунтаванае колькасць. Няма выснову відэа прылады, якое я ведаю вельмі нават здольна адлюстроўваць гэта. Безумоўна, ёсць тып кэшавання, якія вы маглі б рабіць замест гэтага. Ці, можа быць зусім іншы дызайн для вашага прыкладання?

Акрамя таго, мець на ўвазе, што малюнак у фонавы буфер (напрыклад, кропкавы малюнак) часта значна хутчэй, чым малюнак непасрэдна на буфер дысплея (гэта значыць, манітор). Такім чынам, вы можаце зрабіць усё вашыя малявання на гэтым фоне буфер, а затым перыядычна блитирования, што на экране ў адзін праход. Гэты метад часта называюць «двайны буферызацыі» (паколькі ён выкарыстоўвае два буфера), і ўяўляе сабой добра вядомы тактыкай для мінімізацыі мігацення. Ён можа таксама вырабляць паляпшэнне хуткасці, калі вам трэба зрабіць як мага хутчэй, таму што гэта дазваляе зрабіць гэта, беручы пад увагу неадольны абмежаванняў вываду на экране.

<�Р> Існуе спосаб зрабіць радок з фіксаваным крокам для дасягнення таго ж эфекту. Гэта не здаецца верагодным.

Маляванне з фіксаваным крокам не збіраецца павялічыць хуткасць у параўнанні з выкарыстаннем прапарцыянальнага адлегласці.

Там з'яўляюцца некалькі «хітрыкі», каб мець на ўвазе, калі вы пішаце асабліва крытычны код малявання, але я моцна сумняваюся, што гэта будзе вельмі карысная для Вас, улічваючы тое, як высока вы » паўторна чаканні. Яны больш для налады алгарытму, не павялічваючы яго прадукцыйнасць на некалькі парадкаў.

2
дададзена
<�Р> Ёсць альтэрнатыўны спосаб малявання шмат адзіночных сімвалаў, якія значна хутчэй?

Graphics.DrawString </а> метады выкарыстання GDI + маляваць, якая мае тэндэнцыю быць больш павольна, чым GDI. GDI звычайна апаратнае паскарэнне, калі ў вас ёсць прыстойны набор графічных драйвераў, усталяваных. Адзіным выключэннем з'яўляецца Windows Vista з тэмай Aero уключаны, але гэта была выпраўленая ў Windows 7. Вы можаце пераключыцца на GDI, а не з дапамогай выкліку аднаго з TextRenderer.DrawText метады замест. Мала таго, што, верагодна, будзе некалькі хутчэй, чым GDI +, ёсць і іншыя перавагі выкарыстання GDI. Адзіны рэальны недахопам з'яўляецца тое, што WinForms не падтрымлівае выкарыстанне GDI для друку. Але гэта не падобна, што гэта клопат пра вас.

Мяркуючы, што вы арыентуецеся толькі сучасныя версіі Windows, якія падтрымліваюць іх, вы маглі б таксама разгледзець некаторыя з новых графічных тэхналогій, такіх як Direct2D і DirectWrite. Для абгортак C#, вы можаце паглядзець у Windows API Code Pack (глядзіце таксама гэты блог артыкул ). OpenGL таксама можа быць варыянт. Я не выкарыстоўваў яго, але хуткасць сярод сваіх прэтэнзій да славы.

На жаль, я да гэтага часу не ўпэўнены, калі гэта будзе дастаткова хутка. Мільён сімвалаў 30 раз у секунду сапраўды неабгрунтаванае колькасць. Няма выснову відэа прылады, якое я ведаю вельмі нават здольна адлюстроўваць гэта. Безумоўна, ёсць тып кэшавання, якія вы маглі б рабіць замест гэтага. Ці, можа быць зусім іншы дызайн для вашага прыкладання?

Акрамя таго, мець на ўвазе, што малюнак у фонавы буфер (напрыклад, кропкавы малюнак) часта значна хутчэй, чым малюнак непасрэдна на буфер дысплея (гэта значыць, манітор). Такім чынам, вы можаце зрабіць усё вашыя малявання на гэтым фоне буфер, а затым перыядычна блитирования, што на экране ў адзін праход. Гэты метад часта называюць «двайны буферызацыі» (паколькі ён выкарыстоўвае два буфера), і ўяўляе сабой добра вядомы тактыкай для мінімізацыі мігацення. Ён можа таксама вырабляць паляпшэнне хуткасці, калі вам трэба зрабіць як мага хутчэй, таму што гэта дазваляе зрабіць гэта, беручы пад увагу неадольны абмежаванняў вываду на экране.

<�Р> Існуе спосаб зрабіць радок з фіксаваным крокам для дасягнення таго ж эфекту. Гэта не здаецца верагодным.

Маляванне з фіксаваным крокам не збіраецца павялічыць хуткасць у параўнанні з выкарыстаннем прапарцыянальнага адлегласці.

Там з'яўляюцца некалькі «хітрыкі», каб мець на ўвазе, калі вы пішаце асабліва крытычны код малявання, але я моцна сумняваюся, што гэта будзе вельмі карысная для Вас, улічваючы тое, як высока вы » паўторна чаканні. Яны больш для налады алгарытму, не павялічваючы яго прадукцыйнасць на некалькі парадкаў.

2
дададзена
<�Р> Ёсць альтэрнатыўны спосаб малявання шмат адзіночных сімвалаў, якія значна хутчэй?

Graphics.DrawString </а> метады выкарыстання GDI + маляваць, якая мае тэндэнцыю быць больш павольна, чым GDI. GDI звычайна апаратнае паскарэнне, калі ў вас ёсць прыстойны набор графічных драйвераў, усталяваных. Адзіным выключэннем з'яўляецца Windows Vista з тэмай Aero уключаны, але гэта была выпраўленая ў Windows 7. Вы можаце пераключыцца на GDI, а не з дапамогай выкліку аднаго з TextRenderer.DrawText метады замест. Мала таго, што, верагодна, будзе некалькі хутчэй, чым GDI +, ёсць і іншыя перавагі выкарыстання GDI. Адзіны рэальны недахопам з'яўляецца тое, што WinForms не падтрымлівае выкарыстанне GDI для друку. Але гэта не падобна, што гэта клопат пра вас.

Мяркуючы, што вы арыентуецеся толькі сучасныя версіі Windows, якія падтрымліваюць іх, вы маглі б таксама разгледзець некаторыя з новых графічных тэхналогій, такіх як Direct2D і DirectWrite. Для абгортак C#, вы можаце паглядзець у Windows API Code Pack (глядзіце таксама гэты блог артыкул ). OpenGL таксама можа быць варыянт. Я не выкарыстоўваў яго, але хуткасць сярод сваіх прэтэнзій да славы.

На жаль, я да гэтага часу не ўпэўнены, калі гэта будзе дастаткова хутка. Мільён сімвалаў 30 раз у секунду сапраўды неабгрунтаванае колькасць. Няма выснову відэа прылады, якое я ведаю вельмі нават здольна адлюстроўваць гэта. Безумоўна, ёсць тып кэшавання, якія вы маглі б рабіць замест гэтага. Ці, можа быць зусім іншы дызайн для вашага прыкладання?

Акрамя таго, мець на ўвазе, што малюнак у фонавы буфер (напрыклад, кропкавы малюнак) часта значна хутчэй, чым малюнак непасрэдна на буфер дысплея (гэта значыць, манітор). Такім чынам, вы можаце зрабіць усё вашыя малявання на гэтым фоне буфер, а затым перыядычна блитирования, што на экране ў адзін праход. Гэты метад часта называюць «двайны буферызацыі» (паколькі ён выкарыстоўвае два буфера), і ўяўляе сабой добра вядомы тактыкай для мінімізацыі мігацення. Ён можа таксама вырабляць паляпшэнне хуткасці, калі вам трэба зрабіць як мага хутчэй, таму што гэта дазваляе зрабіць гэта, беручы пад увагу неадольны абмежаванняў вываду на экране.

<�Р> Існуе спосаб зрабіць радок з фіксаваным крокам для дасягнення таго ж эфекту. Гэта не здаецца верагодным.

Маляванне з фіксаваным крокам не збіраецца павялічыць хуткасць у параўнанні з выкарыстаннем прапарцыянальнага адлегласці.

Там з'яўляюцца некалькі «хітрыкі», каб мець на ўвазе, калі вы пішаце асабліва крытычны код малявання, але я моцна сумняваюся, што гэта будзе вельмі карысная для Вас, улічваючы тое, як высока вы » паўторна чаканні. Яны больш для налады алгарытму, не павялічваючы яго прадукцыйнасць на некалькі парадкаў.

2
дададзена
<�Р> Ёсць альтэрнатыўны спосаб малявання шмат адзіночных сімвалаў, якія значна хутчэй?

Graphics.DrawString </а> метады выкарыстання GDI + маляваць, якая мае тэндэнцыю быць больш павольна, чым GDI. GDI звычайна апаратнае паскарэнне, калі ў вас ёсць прыстойны набор графічных драйвераў, усталяваных. Адзіным выключэннем з'яўляецца Windows Vista з тэмай Aero уключаны, але гэта была выпраўленая ў Windows 7. Вы можаце пераключыцца на GDI, а не з дапамогай выкліку аднаго з TextRenderer.DrawText метады замест. Мала таго, што, верагодна, будзе некалькі хутчэй, чым GDI +, ёсць і іншыя перавагі выкарыстання GDI. Адзіны рэальны недахопам з'яўляецца тое, што WinForms не падтрымлівае выкарыстанне GDI для друку. Але гэта не падобна, што гэта клопат пра вас.

Мяркуючы, што вы арыентуецеся толькі сучасныя версіі Windows, якія падтрымліваюць іх, вы маглі б таксама разгледзець некаторыя з новых графічных тэхналогій, такіх як Direct2D і DirectWrite. Для абгортак C#, вы можаце паглядзець у Windows API Code Pack (глядзіце таксама гэты блог артыкул ). OpenGL таксама можа быць варыянт. Я не выкарыстоўваў яго, але хуткасць сярод сваіх прэтэнзій да славы.

На жаль, я да гэтага часу не ўпэўнены, калі гэта будзе дастаткова хутка. Мільён сімвалаў 30 раз у секунду сапраўды неабгрунтаванае колькасць. Няма выснову відэа прылады, якое я ведаю вельмі нават здольна адлюстроўваць гэта. Безумоўна, ёсць тып кэшавання, якія вы маглі б рабіць замест гэтага. Ці, можа быць зусім іншы дызайн для вашага прыкладання?

Акрамя таго, мець на ўвазе, што малюнак у фонавы буфер (напрыклад, кропкавы малюнак) часта значна хутчэй, чым малюнак непасрэдна на буфер дысплея (гэта значыць, манітор). Такім чынам, вы можаце зрабіць усё вашыя малявання на гэтым фоне буфер, а затым перыядычна блитирования, што на экране ў адзін праход. Гэты метад часта называюць «двайны буферызацыі» (паколькі ён выкарыстоўвае два буфера), і ўяўляе сабой добра вядомы тактыкай для мінімізацыі мігацення. Ён можа таксама вырабляць паляпшэнне хуткасці, калі вам трэба зрабіць як мага хутчэй, таму што гэта дазваляе зрабіць гэта, беручы пад увагу неадольны абмежаванняў вываду на экране.

<�Р> Існуе спосаб зрабіць радок з фіксаваным крокам для дасягнення таго ж эфекту. Гэта не здаецца верагодным.

Маляванне з фіксаваным крокам не збіраецца павялічыць хуткасць у параўнанні з выкарыстаннем прапарцыянальнага адлегласці.

Там з'яўляюцца некалькі «хітрыкі», каб мець на ўвазе, калі вы пішаце асабліва крытычны код малявання, але я моцна сумняваюся, што гэта будзе вельмі карысная для Вас, улічваючы тое, як высока вы » паўторна чаканні. Яны больш для налады алгарытму, не павялічваючы яго прадукцыйнасць на некалькі парадкаў.

2
дададзена