Пример #1
0
        /// <summary>
        /// Erzeugt eine neue Zeichenumgebung.
        /// </summary>
        /// <param name="line">Die zugehörige Zeile auf der Videotext Seite.</param>
        public CharDrawingContext(LineDrawingContext line)
        {
            // Remember
            Line = line;

            // Setup
            Foreground = LineDrawingContext.Brushes[Color.White];
            Background = null;
        }
		/// <summary>
		/// Erzeugt eine neue Zeichenumgebung.
		/// </summary>
		/// <param name="line">Die zugehörige Zeile auf der Videotext Seite.</param>
		public CharDrawingContext(LineDrawingContext line)
		{
			// Remember
			Line = line;

			// Setup
			Foreground = LineDrawingContext.Brushes[Color.White];
			Background = null;
		}
        /// <summary>
        /// Zeichnet eine Videotext Zeile.
        /// </summary>
        /// <param name="line">Die Nummer der Zeile von 0 bis 25.</param>
        /// <param name="data">Die Daten zur Zeile.</param>
        /// <param name="prefix">Optionale Präfixdaten zur Zeile.</param>
        /// <returns>Informationen zur ausgegebenen Zeile.</returns>
        private LineDrawingContext DrawLine(int line, byte[] data, string prefix)
        {
            // Create context
            LineDrawingContext context = new LineDrawingContext(this);

            // Process
            context.Draw(line, data, prefix);

            // Report result
            return(context);
        }
        /// <summary>
        /// Zeichnet eine Videotext Zeile.
        /// </summary>
        /// <param name="line">Die Nummer der Zeile von 0 bis 25.</param>
        /// <param name="data">Die Daten zur Zeile.</param>
        /// <param name="prefix">Optionale Präfixdaten zur Zeile.</param>
        /// <returns>Informationen zur ausgegebenen Zeile.</returns>
        private LineDrawingContext DrawLine( int line, byte[] data, string prefix )
        {
            // Create context
            LineDrawingContext context = new LineDrawingContext( this );

            // Process
            context.Draw( line, data, prefix );

            // Report result
            return context;
        }
Пример #5
0
        /// <summary>
        /// Erzeugt die aktuelle Seite als <see cref="Bitmap"/>.
        /// </summary>
        /// <param name="holder">Ein Anzeigeelement als Referenz für die Parameter der <see cref="Bitmap"/>.</param>
        /// <param name="digits">Alle auf der Seite verwendeten Zahlen.</param>
        /// <param name="extend">Beschreibt den tatsächlich relevanten Teil der Seite.</param>
        /// <returns>Eine Darstellung der aktuellen Videotext Seite.</returns>
        public Bitmap CreatePage(Control holder, out DigitManager digits, out RectangleF extend)
        {
            // Create device context
            using (var referenceContext = Graphics.FromHwnd(holder.Handle))
                using (var pageDraw = new PageDrawingContext(referenceContext, IsTransparent))
                {
                    // Process header
                    if (!IsTransparent)
                    {
                        if (!NoHeader)
                        {
                            // Get the prefix for the headline
                            string prefix;
                            if (!string.IsNullOrEmpty(Feedback))
                            {
                                prefix = string.Format("{0}       ", Feedback).Substring(0, 8);
                            }
                            else if (SubPage < 1)
                            {
                                prefix = string.Format("{0:000}     ", Page);
                            }
                            else
                            {
                                prefix = string.Format("{0:000}/{1:00}  ", Page, SubPage).Substring(0, 8);
                            }

                            // Fill the headline
                            pageDraw.DrawHeader(prefix, Header);
                        }
                    }

                    // Fill the body
                    if (!Hide)
                    {
                        for (int i = 0; ++i < 26;)
                        {
                            // Line data
                            byte[] line;
                            if (!m_Lines.TryGetValue(i, out line))
                            {
                                continue;
                            }

                            // Fill the line
                            LineDrawingContext context = pageDraw.DrawLine(i, line);

                            // Skip line if double height characters are used
                            if (context.HasDoubleHeight)
                            {
                                i++;
                            }
                        }
                    }

                    // Attach to digit manager of context
                    digits = pageDraw.Digits;
                    extend = pageDraw.Extend;

                    // Report
                    return(pageDraw.Detach());
                }
        }