BBC BASIC
Rev B, 234 bytes
Em vez de desenhar uma cruz branca e uma cruz vermelha, desenhamos 100 cruzamentos progressivamente mais estreitos, alternando de fundo branco para primeiro plano vermelho com uma coordenada de 60.
p=20761m=1049w=600h=300F.i=-1TO1V.29,w;h;18;4,m;134*i;0;m;w*i;-233;p;0;466;m;0;67*i;m;-466;h*i;p;932;0;18;1,m;511*i;h*i;25;89*i;0;29977;0;0;m;w*i;-h*i;28953;0;45*i;
N.F.c=-100TO0q=25881-c DIV60*512V.m;-c;-h;q;c;h;m;-w;-c;q;w;c;
N.
Faça o download do intérprete gratuitamente em http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Totalmente jogado, 249 bytes
Códigos VDU de byte único, por exemplo, 25,0combinados em little endian de byte duplo, por exemplo, 25;e uso máximo de constantes para valores comuns. Palavras-chave compactadas para a forma abreviada, por exemplo, FOR=> F.(o intérprete se expande automaticamente.)
p=20761q=26393r=25881m=1049c=100w=600h=300F.i=-1TO1V.29,w;h;18;4,m;134*i;0;m;w*i;-233;p;0;466;m;0;67*i;m;-466;h*i;p;932;0;18;1,m;511*i;h*i;25;89*i;0;29977;0;0;m;w*i;-h*i;28953;0;45*i;
N.V.m;-c;-h;q;c;h;2m;-w;-c;q;w;c;m;-60;-h;r;60;h;m;-w;-60;r;w;60;
Semigolfe
Códigos VDU brutos. No BBC BASIC, os caracteres podem ser enviados para o controlador VDU como VDU65(imprime um A.) Existem certos caracteres especiais específicos da BBC para gráficos. Estes devem ser seguidos por vários outros bytes para especificar coordenadas, etc. Aqui usamos PLOT=> VDU25, GCOL=> VDU18, ORIGIN=> VDU29.
c=100w=600h=300 :REM constants 100,width,height
FORi=-1TO1 :REM loop -1 and 1 (0 draws nothing)
VDU29,w;h; :REM set origin (bring inside loop for golfing reasons)
VDU18;4 :REM change to blue and draw triangles
VDU25,4,134*i;0;25,4,w*i;-233;25,81,0;466;25,4,0;67*i;25,4,-466;h*i;25,81,932;0;
VDU18;1 :REM change to red and draw parallelograms
VDU25,4,511*i;h*i;25,0,89*i;0;25,117,0;0;25,4,w*i;-h*i;25,113,0;45*i;
NEXT
VDU25,4,-c;-h;25,103,c;h;25,4,-w;-c;25,103,w;c; :REM draw white background rectangles
VDU25,4,-60;-h;25,101,60;h;25,4,-w;-60;25,101,w;60; :REM draw red foreground rectangles
Primeiro, desenhamos metade das partes diagonais: 2 triângulos azuis e 2 paralelogramos vermelhos. Em seguida, alteramos a escala de -1 para +1 e desenhamos a outra metade. Finalmente, desenhamos as partes horizontais e verticais na parte superior: 2 retângulos brancos para formar uma cruz branca, depois 2 retângulos vermelhos. A imagem após a primeira iteração do loop é mostrada abaixo, juntamente com a imagem final.

Código ungolfed
O BBC basic lembra os dois últimos locais do cursor gráfico. PLOT81 desenha um triângulo entre as novas coordenadas especificadas e esses dois últimos locais. PLOT113 e PLOT117 desenham um paralelogramo da mesma maneira: três cantos do paralelogramo devem ser dados na ordem em que são encontrados percorrendo o perímetro. Os últimos três bits do código PLOT definem se as coordenadas fornecidas são absolutas ou relativas e se a cor de primeiro plano ou de fundo é usada. Os bits mais significativos definem que tipo de forma é desenhada (ponto, linha, triângulo, paralelogramo, retângulo etc.)
ORIGIN600,300 :REM move the origin (which will be centre of flag) away from the corner of the screen.
FORi=-1TO1 :REM at scales of -1 and 1, plot half each of the diagonal parts (i=0 plots nothing).
GCOL0,4 :REM blue foreground colour
PLOT4,134*i,0 :REM absolute move to peak of upper/lower triangle
PLOT4,600*i,-233 :REM absolute move to left hand corner
PLOT81,0,466 :REM relative move to right hand corner, plotting triangle
PLOT4,0,67*i :REM absolute move to peak of left/right triangle
PLOT4,-466,300*i :REM absolute move to lower corner
PLOT81,932,0 :REM relative move to upper corner, plotting triangle
GCOL0,1 :REM red foreground colour
PLOT4,511*i,300*i :REM absolute move to long edge of flag
PLOT0,89*i,0 :REM relative move to corner of flag (top right / bottom left)
PLOT117,0,0 :REM absolute move to centre of flag, plotting parallelogram (stripe)
PLOT4,600*i,-300*i :REM absolute move to corner of flag (bottom right / top left)
PLOT113,0,45*i :REM relative move to short edge of flag, plotting parallelogram (stripe)
NEXT :REM diagonal parts completed, now plot vertical/horizontal parts on top.
PLOT4,-100,-300 :REM move to bottom left of vertical white stripe
PLOT103,100,300 :REM move to top right corner, plot it in background colour (white)
PLOT4,-600,-100 :REM move to bottom left corner of horizontal white stripe
PLOT103,600,100 :REM move to top right corner, plot it in background colour (white)
PLOT4,-60,-300 :REM move to bottom left of vertical red stripe
PLOT101,60,300 :REM move to top right corner, plot it in foreground colour (red)
PLOT4,-600,-60 :REM move to bottom left corner of horizontal red stripe
PLOT101,600,60 :REM move to top right corner, plot it in foreground colour (red)