my $self = shift;  my $bg = shift;  my $fg = shift;  # Button Objekt, Fordergrund- und Hintergrundfarbe  # werden übergeben.  my $width = int($self->{FONT}->width($self->{TEXT}) + 16);  my $height = int($self->{SIZE} + 20);  # Die Höhe und Breite von $border (s.u.) bekommst du  # durch den Font, den man benutzen möchte und eine  # SIZE Option, welche der -size Option im Font gleicht.  # Rechtecke zeichnen:  my $border = SDL::Rect->new  (-height => $height,   -width => $width,   -x => $self->{X},   -y => $self->{Y});  my $inline = SDL::Rect->new  (-height => $height-4,   -width => $width-4,   -x => $self->{X}+2,   -y => $self->{Y}+2);  # $inline kleiner als $border, da man ja den Rand auch noch  # sehen soll.  # Rechtecke füllen:  $self->{APP} -> fill($border,$bg);  $self->{APP} -> fill($inline,$fg);  # Text-Position berechnen:  #  X bekommst du, indem du einfach die X-Position des  #  Rechteckes + 8 nimmst.  #  Y bekommst du, indem du die Höhe des Rechteckes / 2  #  teilst, die Y-Position des Rechteckes addierst und die  #  Höhe des Textes anhand des benutzten Fonts / 2 geteilt  #  subtraierst.  # Allerdings nur, wenn du möchtest, dass der Text in der  # Mitte steht und nicht so dicht am Rand.  my $nx  = $self->{X} + 8;  my $ny  = int((($height / 2) + $self->{Y}) - $self->{FONT}->height($self->{TEXT}) / 2);  # Text ausgeben:  $self->{FONT} -> print ($self->{APP},$nx,$ny,$self->{TEXT});  # Bereich 'neu laden' und  # APP flippen:  $self->{APP} -> update($border);  $self->{APP} -> flip ();