【问题标题】:Where is my text?我的文字在哪里?
【发布时间】:2014-04-19 22:49:11
【问题描述】:

我正在制作一个轮盘赌,它最终会被动画化。之前口袋里的数字是显示出来的,改了很多之后就没有了。我已经查看了一段时间的代码。

希望由于缺乏睡眠 + 初学者水平的专业知识,我错过了一些明显的东西。

     #include <stdio.h>
#include <stdlib.h>
#include <gd.h>
#include <math.h>

#define USE_GLOBAL_COLORMAP  1
#define USE_LOCAL_COLORMAP   0

#define LOOP_ANIMATION_FOREVER  1
#define DO_NOT_LOOP_ANIMATION  0
#define AUTO_FRAME_DISPOSAL     1
#define ANIMATION_DELAY         1 /* in milliseconds */

#define IMAGE_WIDTH        500
#define IMAGE_HEIGHT       500
#define CENTERX IMAGE_WIDTH /2
#define CENTERY IMAGE_WIDTH /2

#define WHEEL_DIAMETER     IMAGE_WIDTH - 20
#define INSIDE_COVER_DIAMETER WHEEL_DIAMETER - 80
#define MAX_FRAMES_COUNT   100
#define MOVEMENT_PER_FRAME 5


int main( void )
{


  gdImagePtr Roulette = gdImageCreate (IMAGE_WIDTH, IMAGE_HEIGHT);


  //FILE *animatedGIF;
  FILE *jpgImageFile = NULL;

    int red, black, green, gold, silver, white, trim;
    int frameCount, frameImage;

    double degreesToRadiansMultiplier = 0.0174532925;
      char *pocketNumbers[] = { "32", "15", "19", "4",  "21", "2",  "25", "17",    "34",
                             "6",  "27", "13", "36", "11", "30", "8",  "23", "10",
                             "5",  "24", "16", "33", "1",  "20", "14", "31", "9",
                            "22", "18", "29", "7",  "28", "12", "35", "3",  "26", "0" }; 


     int sliceCounter = 0;
      int sliceStartingAngle = 0;
      int sliceEndingAngle = 0;
      int sliceAngleIncrement = 9;
      int textPositionAngle = 367;
      int textRotationAngle = 270;
      int textPositionX, textPositionY;
      int drawingColor;




      frameImage = gdImageCreate( IMAGE_WIDTH, IMAGE_HEIGHT );
    gdImageColorAllocate( Roulette, 34, 139, 34 );
    red = gdImageColorAllocate( Roulette, 204, 0, 0 );
    white = gdImageColorAllocate( Roulette,  255, 255, 255 );
    green = gdImageColorAllocate( Roulette, 0, 102, 0 );
    gold = gdImageColorAllocate( Roulette, 215, 215, 0 );
    silver = gdImageColorAllocate( Roulette, 192, 192, 192 );
    black = gdImageColorAllocate( Roulette, 0, 0, 0);
    trim = gdImageColorAllocate (Roulette, 102, 51, 0);

    gdImageSetThickness( Roulette, 4 );
    gdImageFilledArc(Roulette, CENTERX, CENTERY, 450, 450, 0, 360, trim, gdArc);

      do
{
sliceStartingAngle = sliceEndingAngle;
sliceEndingAngle = sliceStartingAngle + sliceAngleIncrement;
textRotationAngle -= sliceAngleIncrement;
textPositionAngle -= sliceAngleIncrement;

if ( sliceCounter == 36 )
{
  drawingColor = green;
  sliceEndingAngle += 1;
  textPositionAngle -= 3;
}
else if ( (sliceCounter % 2) == 0 )
{
  drawingColor = red;
  textRotationAngle += 2;
}
else
{
  drawingColor = black;
  sliceEndingAngle += 1;
  textPositionAngle -= 1;
  textRotationAngle -= 1;
}

if ( (sliceCounter % 5) == 0 ) sliceEndingAngle += 1;
if ( (sliceCounter % 7) == 6 ) { textPositionAngle -= 1; textRotationAngle -= 8; }
if ( (sliceCounter % 13) == 12 ) textPositionAngle -= 1;

textPositionX = (cos(textPositionAngle * degreesToRadiansMultiplier) * (WHEEL_DIAMETER / 2.25)) + CENTERX;
textPositionY = CENTERY - (sin(textPositionAngle * degreesToRadiansMultiplier) * (WHEEL_DIAMETER / 2.25));

gdImageFilledArc( Roulette, CENTERX, CENTERY, WHEEL_DIAMETER, WHEEL_DIAMETER, sliceStartingAngle, sliceEndingAngle, drawingColor, gdArc );
gdImageStringFT( Roulette, NULL, white, "Vera.ttf", 14, textRotationAngle * degreesToRadiansMultiplier, textPositionX, textPositionY, pocketNumbers[ sliceCounter ] );
  } while ( ++sliceCounter < 37 );

  gdImageFilledEllipse( Roulette, CENTERX, CENTERY, INSIDE_COVER_DIAMETER,    INSIDE_COVER_DIAMETER, white );





   //gdImageFilledArc( Roulette, CENTERX, CENTERY, WHEEL_DIAMETER, WHEEL_DIAMETER, sliceStartingAngle, sliceEndingAngle, gold, gdArc );



    jpgImageFile = fopen( "RouletteImage.jpg", "wb" );
      gdImageJpeg( Roulette, jpgImageFile, -1 );
      fclose( jpgImageFile );
      gdImageDestroy( Roulette );
    }

谢谢 :)(哦,还有欧洲轮盘)

【问题讨论】:

    标签: c fonts geometry trigonometry


    【解决方案1】:

    真的很简单,我想我只是累了。

    移除符号常量

    #define WHEEL_DIAMETER IMAGE_WIDTH - 20
    

    替换为整数

      int WHEEL_DIAMETER = IMAGE_WIDTH - 20;
    

    【讨论】:

      猜你喜欢
      • 2015-12-20
      • 2012-06-10
      • 1970-01-01
      • 2012-11-12
      • 1970-01-01
      • 2014-03-10
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多