Конференция ".Net" » Canvas na C# [C#, WinXP]
 
  • Курдль © (04.04.06 12:38) [20]

    > Мне кажется что вам не нравится паинт из-за того, что вы
    > пытаетесь в него слишком много запихнуть (типа вычисления
    > точек графика), в то время как он должен заниматься только
    > прорисовкой без всяких оверворков.


    Ок! Тогда надо иметь буфер, в котором будут храниться точки графика, нужно будет по каждому OnPaint их оттуда запрашивать и прорисовывать на канве. Если изображение довольно сложное, то для ускорения процесса придется еще контролировать, какие именно области прорисовывать надо, а какие-нет и т.п.
    Так TBitmap и есть буфер, а TImage - его оболочка, которая все сама за Вас сделает.
  • Algol (04.04.06 13:47) [21]

    > Тогда надо иметь буфер, в котором будут храниться точки
    > графика


    Ну да, естественно такой буфер нужен. Но это нормально, массив промежуточных данных.
    А вот битмап данными назвать сложно. Если вашему юзеру вдруг захочется посмотреть фрагмент графика, который "уплыл" минуту назад, откуда вы в битмапе возмете недостающие точки? А вот с массивом промежуточных данных - запросто.
  • KSergey © (05.04.06 09:39) [22]
    > Курдль ©   (04.04.06 12:38) [20]

    Эта, не надо путать теплое с мягким.
    Есть вычисления того, что надо отрисовать и есть отрисовка.
    Надо просто понимать разницу, о чем и говорят товарисчи. Не надо вычислять сложый график в OnPaint. Если Вы это делаете - это Ваши личные проблемы и недочитанность документации. Сорри за эмоции.

    Если Вам для хранения того, что нужно отрисовывать (то, что уже насчитано) удобно использовать Bitmap - это замечательно. Действительно, совершенно необязательно изобратать велосипеды с каким-то буфером, если есть готовый и вполне подходящий.

    Но не надо говорить, что не надо перекрывать OnPaint там, где это надо: отрисовывать имеющиеся данные. К стати, как интересно по-вашему сделана отрисовка того-же TImage? На resize? :)

    И вот еще: как показали печальные опыты, когда нужно отрисовать множество мелких примитивов - то не получается пользоваться множеством всяких TShape, даже если их изобразительных средств достаточно. Тут уже надо делать какой-то буфер для данных и отрисовывать эти данные в OnPaint.

    PS
    Просто имеем дело со случаем, когда человек обжегся, но сделал не правильные, увы, выводы. Не страшно. Надеюсь, он поймет действительные причины возникшей проблемы и переосмыслит свое отношение к ней :)
  • Курдль © (05.04.06 10:14) [23]

    > PS
    > Просто имеем дело со случаем, когда человек обжегся, но
    > сделал не правильные, увы, выводы. Не страшно. Надеюсь,
    > он поймет действительные причины возникшей проблемы и переосмыслит
    > свое отношение к ней :)


    Вот слова настоящего многоопытного снисходительного Гуру! :)
    Я приводил примеры своих работ над графикой (Курдль ©   (04.04.06 09:56) [12]). Хотя графика и не является моим профилем. То, что от меня требовалось - я делал. Графика работала, не глючила и не тормозила. Ни разу OnPaint мне не понадобился.
  • Polevi © (06.04.06 17:33) [24]
    >Курдль ©   (04.04.06 09:56) [12]

    http://msdn.microsoft.com/library/default.asp?url=/library/en-
    us/ado270/htm/mdmthmovefirst.asp

    найдите слово Delphi по этой ссылке
  • Algol (06.04.06 17:49) [25]

    > Попробуйте лучше написать аналог Label с WordWrap=true и
    > TextAlign=MiddleCenter.


    А еще лучше со свойством Angle ;)
 
Конференция ".Net" » Canvas na C# [C#, WinXP]
Есть новые Нет новых   [134430   +2][b:0][p:0]