- 浏览: 625117 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
oldrat:
引用Special cases aren't special ...
武汉大学开源技术俱乐部 技术交流 第1期 -
yzsunlight:
试了试 ,不行
Android Studio SDK Manager无法正常下载如何设置 -
qianjigui:
更全面的文档:http://www.5wpc.info/it/ ...
Ruby正则表达式操作参考 -
qianjigui:
Anddy 写道Anddy 写道tag是自动创建的吗? 能手动 ...
vim的跳转 -
Anddy:
Anddy 写道tag是自动创建的吗? 能手动创建吗? 在sh ...
vim的跳转
Programming: Drawing
Description
This assignment requires you to complete the dynamic drawing components of the Date/Time Control Panel from the previous two programming assignments. In particular, you will be moving the map found in the "Time Zone" tab when the time zone changes and will be drawing a clock face corresponding to the time setting.
Recall that the image used for displaying the map (in a PictureBox control) has been prepared with one pixel corresponding to each degree of longitude and has been drawn long enough to be displayed at any setting from 0 to 360 degrees. Each time the time zone is changed, you should redraw the PictureBox control containing the map to indicate the approximate position of the time zone on the globe. This can be done by converting the number of minutes offset from GMT into degrees of rotation of the earth. Recall that 24 hours (= 1440 minutes) of offset corresponds to 360 degrees and that the map image has been drawn with one pixel for each degree. Finally, note that the map image has been prepared so that displaying its left edge at 0 corresponds to centering the image at 0 degrees (= GMT - 12 hours).
You should assign the map image (see the resources below) to the Image property of the PictureBox control using the Properties editor in Visual Basic. This will allow you to access the image easily when it needs to be redrawn in a new position. Each time the time zone offset changes you should redraw the Image in the PictureBox control. This can be done by first computing a drawing offset for the image. To do this, first compute a rotation from the GMT offset, and then convert that rotation into pixels. A rotation of N degrees corresponds to an offset of -N pixels indicating that the left edge of the image appears N pixel to the left of the PictureBox origin. Once a drawing offset has been computed the actual map image may be drawn using the Graphics DrawImage routine. If the PictureBox is called mapPicture and the computed offset is screenOffset , then drawing would be done with the statement:
e.Graphics.DrawImage(mapPicture.Image, screenOffset, 0)
The second portion of this assignment is to draw a clock face in the PictureBox found on the "Date & Time" tab. As shown below, this clock face should reflect the current time setting. Consequently, it should be redrawn whenever the hour, minute, or second setting changes.
In drawing the clock face, you may find the following Graphics
methods to be useful:
DrawLine
FillPolygon
FillEllipse
Finally, the routines clockX() and clockY()( which are provided in the resources section below) may be useful. These routines compute the x and y positions of a point on the clock face at a given minute and at a given distance from the center of the clock (assuming that the center of the clock is at location 0,0). The following example code draws a small black circle at the 35-minute position of a clock centered in a PictureBox given as a parameter.
Public Sub drawDotAt35Minutes(ByVal onObj As PictureBox, ByVal e
as Windows.Forms.PaintEventArgs)
Const clockInset As Integer = 100
' distance
from clock edge to box edge
Const dotRadius As Integer = 15
' size of the dot
Dim smallDim As
Integer
' smaller of width and height of
box
Dim clockRadius As
Integer
' radius of the clock
Dim centerX As
Integer
' x for center of the clock
Dim centerY As
Integer
' y for center of the clock
Dim x As
Integer
' x position of dot
Dim y As
Integer
' y position of dot
Dim brush As new SolidBrush(Color.Black) 'brush
' calculate the center of the clock and its
radius
so it fits in the box
centerX = onObj.Width / 2
centerY = onObj.Height / 2
smallDim = onObj.Width
If (onObj.Height < smallDim) Then
smallDim
= onObj.Height
End If
clockRadius = smallDim / 2 - clockInset
' calculate the position of the dot
x = centerX + clockX(35, clockRadius - dotRadius)
y = centerY + clockY(35, clockRadius - dotRadius)
' draw a filled black circle
e.Graphics.FillEllipse(brush, x, y,
dotRadius, dotRadius)
End Sub
Resources
-
Map image
This image is scaled with each pixel corresponding to one degree of longitude. You can download the image here: time_zone_map.gif
-
Clock drawing helper routines
The following routines compute the x and y positions of a point on a clock face, assuming that the clock is centered at 0,0. They each take a minute value to define a location along the clock, as well as a radius that defines how far away from the center of the clock the point should be.
Public Function clockDrawX(minuteVal As Integer, radius As
Integer)
Const PI As Double = 3.14159265
Dim angle As Double
angle = (PI * 2 * minuteVal) / 60 - PI / 2
Return CInt(radius * Cos(angle))
End Function
Public Function clockDrawY(minuteVal As Integer, radius As
Integer)
Dim angle As Double
Dim PI As Double
PI = 3.14159265
angle = (PI * 2 * minuteVal) / 60 - PI / 2
Return CInt(radius * Sin(angle))
End Function
-
Sample Solution
An executable like the application you are asked to create, click Ex8.zip
.
Submission
Submit the following files:
- A project archive named Exercise8.zip
- ex8.zip (65.8 KB)
- 下载次数: 12
- Exercise08.zip (607.5 KB)
- 描述: 我的解答
- 下载次数: 56
评论
Total Score: 93/100
* Elements
Score: 60/60
* Functions
Score: 23/30
o NewFunctions
Score: 15/20
+ Redrawing of the Clock Face
Score: 5/10
This function is flawed in some minor way. -5
+ Movement of Time-Zone Map
Score: 10/10
o PriorFunctions
Score: 8/10
+ Calendar control update
Score: 1/2
This function is flawed in some minor way. -1
+ Seconds range restriction
Score: 1/2
This function is flawed in some minor way. -1
+ Minutes range restriction
Score: 2/2
+ Hours range restriction
Score: 2/2
+ AM/PM radio buttons
Score: 2/2
+ Time Zone ComboBox
Score: 2/2
+ Daylight Saving CheckBox disabling
Score: 2/2
+ OK button
Score: 2/2
+ Cancel button
Score: 2/2
+ Apply button
Score: 2/2
+ Settings report
Score: 2/2
* GeneralIssues
Score: 10/10
发表评论
-
Ruby 2.1 GC策略
2014-01-23 11:30 969对象管理主要涉及: Profiling support ... -
Google 持续集成介绍
2014-01-23 11:26 1566见附件PPT. 具体方案 构建描述 依赖分析 ... -
函数式编程 读后感
2013-12-30 15:24 1457一篇比较不错的文章: http://coolshel ... -
系统模块集成管理与版本控制学习
2013-12-27 12:01 1342论软件生命周期集成 http://www.infoq.com ... -
Ruby 动态特性鉴赏
2013-12-26 16:47 1337以下代码与代码学习来自<Ruby Best Prac ... -
Android应用插件化与动态部署 学习
2013-12-26 16:45 0通过REST将相关服务有语义的组合起来。 动态部署: ... -
用Markdown做文档的问题
2013-12-23 18:06 867一直有想一种语言能够解决文档编写问题。 一般文档编写 ... -
Android组件、通信与安全机制学习
2013-12-20 12:26 0现有问题: Android的组件间通信有哪些方法?其中的I ... -
Android root 原理学习
2013-12-15 23:51 2338学习资源: http://www.zhihu.com/qu ... -
global + Ruby
2012-11-16 13:07 1287http://simple-and-basic.com/200 ... -
Linux pthread线程同步相关的API学习
2012-11-12 18:43 1475原因 最近在深入理解Dalvik虚拟机的内部线程控制体系,其 ... -
MMTk代码学习(系统结构与流程)
2012-11-06 19:08 1654MMTk的整体结构和驱动模型主要由Plan, Collecto ... -
MMTk代码学习(RVM接口)
2012-11-06 14:52 1563前导 MMTk被RVM整个封装在后端,主要调用接口是 org ... -
MMTk代码学习(整体结构)
2012-11-05 17:03 2460必要的整体模块 对于一个完整的内存管理工具,主要涉及: ... -
嵌入式Java虚拟机 GC特性一览
2012-10-31 15:53 1300嵌入式Java虚拟机列表来源:http://en.wikipe ... -
Memory Analysis Tool OQL 用例汇总及语法学习
2012-10-28 16:36 2176典型用例 获取所有对象: SELECT * FROM $ ... -
Memory Analysis Tool 使用相关材料整理
2012-10-28 10:47 2017利用MAT分析问题 从转储(Dump)文件中调试并除错 ... -
手机设备操作系统架构图整理
2012-10-28 10:28 1560整体分析材料 Android,ChromeOS, WebO ... -
MMTk特性认识
2012-10-25 16:24 1775整体介绍 MMTk是一个内存管理的工具包 ,同时也是jik ... -
JavaScript V8 引擎相关资料
2012-10-25 14:54 1134V8 Javascript engine之所以快 针 ...
相关推荐
【标题】"SSD04 Exercise04 个人解答"主要涵盖了两个关键知识点:源码理解和工具使用。在这个练习中,作者分享了他们对于特定编程问题的解决方案,可能涉及编程语言的深入理解、代码调试技巧以及如何有效地利用开发...
标题“SSD04 Exercise06 个人解答”暗示了一个编程练习或项目,其中涉及到对Microsoft Calendar Control 10.0的使用。这个控制组件通常用于Windows应用程序开发,特别是使用Visual Basic 6 (VB6) 或其他支持ActiveX...
【标题】"SSD04 Exercise03 个人解答"主要涵盖了两个关键概念:源码分析和工具使用。这可能是某个课程或项目中的一个练习,其中"SSD04"可能代表课程编号或者阶段,而"Exercise03"则指示这是第三次实践任务。解答者...
标题 "SSD06 Exercise04 个人解答" 暗示这可能是一个关于软件开发或编程练习的解答,特别是涉及到性能分析或者优化的环节。描述中的 "NULL" 没有提供额外的信息,但我们可以从标签 "源码" 和 "工具" 中推测,这个...
这是我的解答 博文链接:https://qianjigui.iteye.com/blog/248917
【标题】"SSD06 Exercise02 个人解答"主要涵盖了两个关键概念:源码分析和工具使用。这可能是某个课程或项目练习的一部分,其中作者Qianjigui分享了他在解决特定编程问题或实现某功能时的经验和理解。 在源码分析...
【标题】"SSD06 Exercise05 个人解答"主要涵盖了两个关键知识点:源码分析和工具使用。在这个练习中,作者分享了他对某个特定编程问题或项目的解答,这通常涉及深入理解代码的运作机制,包括算法、数据结构以及编程...
综上所述,SSD04 Exercise05 个人解答不仅仅是完成了一个具体的编程练习,更重要的是,通过这个过程,我学习到了如何有效地阅读和分析源码,如何深入理解编程语言特性和算法的运作,以及如何熟练运用开发工具来提升...
标题“SSD06 Exercise03 个人解答”暗示了一个编程练习或课程作业,其中可能涉及 SSD(固态存储)相关的技术,而 Exercise03 可能是该系列练习中的第三个部分。描述提到的“Ubuntu8.04+Gcc+Gdb”是一个古老的Linux...
NULL 博文链接:https://qianjigui.iteye.com/blog/256678
我的解答 博文链接:https://qianjigui.iteye.com/blog/248918