Hi @ all

I try to plot a static DC-Object (means: the graphic is calculated uniquely
at runtime, depending of several parameters, and does not change while
displaying the window) in a window.
The problem is that this object continuously needs to be redrawn, because it
vanishes during moving the window around, or if an other window is moving
over it. 
I thought, a repaint-routine like that would solve the problem:
-------------------------------------
use strict;
use Win32::GUI();
our $WIN;
our %DC;

&build_gui;
Win32::GUI::Dialog();

sub build_gui # Building the GUI
{
$WIN = new Win32::GUI::Window(
      -left => 200, -top => 200, -width  => 300, -height => 300,
      -name   => "WIN",
      -text   => "Static-DC-Test",
      #-noflicker => 1, # Useless/worse result
      );
$WIN->Show();
$DC{'color'}{'white'} = [255,255,255];
$DC{'color'}{'red'} = [255,0,0];
$DC{'pen'} = new Win32::GUI::Pen( -color => $DC{'color'}{'red'}, -width =>
3, );
$DC{'brush'} = new Win32::GUI::Brush( -color => $DC{'color'}{'white'},
-width => 1, );
&repaint;
$DC{'timer'} = $WIN ->AddTimer("timer", 100);
}

sub ::timer_Timer # Repaint DC with interval of 'timer'
{ &repaint; }

sub WIN_Terminate { return -1; }

sub repaint # Create/rebuild DC-Object
{
$DC{'dc'}{'object'} = $WIN -> GetDC;
$DC{'dc'}{'object'} -> FillRect(10, 10, 280, 260,$DC{'brush'});
$DC{'dc'}{'object'} -> SelectObject($DC{'pen'});
$DC{'dc'}{'object'} -> BeginPath();
$DC{'dc'}{'object'} -> MoveTo(10, 10);
$DC{'dc'}{'object'} -> LineTo(280, 260);
$DC{'dc'}{'object'} -> EndPath();
$DC{'dc'}{'object'} -> StrokePath();
#$DC{'dc'}{'object'}   -> Save(); # ??? Save() --> Restore() ???
}
-------------------------------------
But the result of the code above is a flickering, annoying graphic.
So the next thought, was to generate a bitmap from the DC. There is, if I’m
not wrong, a method with DIBitmap. But, I would like to refrain from binding
in that module, only for converting a single graphic, because it’s bloating
up the program/PAR-binary.


Sadly, the DC-Documentation is frequent a sealed book for me.
Does anyone know an easy method (I also like to take a complex solution :-))
to convert a DC into a bitmap-object, without using DIBitmap? Or, even
better, a way to prevent that flickering during the repaint?

Thanks a lot.

Regards,
Raphael


------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Perl-Win32-GUI-Users mailing list
Perl-Win32-GUI-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users
http://perl-win32-gui.sourceforge.net/

Reply via email to